RankUtils.java 1.04 KB
Newer Older
刘基明's avatar
刘基明 committed
1 2
package com.tanpu.community.util;

刘基明's avatar
刘基明 committed
3
import com.tanpu.community.dao.entity.community.ThemeEntity;
刘基明's avatar
刘基明 committed
4

刘基明's avatar
刘基明 committed
5
import java.util.Comparator;
刘基明's avatar
刘基明 committed
6 7
import java.util.HashMap;
import java.util.List;
刘基明's avatar
刘基明 committed
8
import java.util.stream.Collectors;
刘基明's avatar
刘基明 committed
9

刘基明's avatar
刘基明 committed
10
public class RankUtils {
刘基明's avatar
刘基明 committed
11 12


刘基明's avatar
刘基明 committed
13
    /**
刘基明's avatar
刘基明 committed
14
     * 根据id排序主题对象(同时去重)
刘基明's avatar
刘基明 committed
15 16 17 18
     * @param list 主题
     * @param ids 主题Id,list中可重复
     * @return
     */
刘基明's avatar
刘基明 committed
19
    public static List<ThemeEntity> sortThemeEntityByIds(List<ThemeEntity> list, List<String> ids){
刘基明's avatar
刘基明 committed
20 21 22
        int count=0;
        HashMap<String, Integer> indexMap = new HashMap<>();
        for (String id : ids) {
刘基明's avatar
刘基明 committed
23 24 25 26 27
            //list中出现重复元素时,优化取第一次出现的顺序
            if (!indexMap.containsKey(id)){
                indexMap.put(id,count++);
            }

刘基明's avatar
刘基明 committed
28
        }
刘基明's avatar
刘基明 committed
29 30 31 32
        List<ThemeEntity> collect = list.stream().filter(o -> indexMap.containsKey(o.getThemeId()))
                .sorted(Comparator.comparingInt(o -> indexMap.get(o.getThemeId())))
                .collect(Collectors.toList());
        return collect;
刘基明's avatar
刘基明 committed
33
    }
刘基明's avatar
刘基明 committed
34
}