package com.tanpu.community.util; import com.tanpu.community.dao.entity.community.ThemeEntity; import org.apache.commons.lang3.StringUtils; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Set; import java.util.stream.Collectors; public class RankUtils { /** * 根据id排序主题对象(同时去重) * @param list 主题 * @param ids 主题Id,list中可重复 * @return */ public static List<ThemeEntity> sortThemeEntityByIds(List<ThemeEntity> list, List<String> ids){ int count=0; HashMap<String, Integer> indexMap = new HashMap<>(); for (String id : ids) { //list中出现重复元素时,优化取第一次出现的顺序 if (!indexMap.containsKey(id)){ indexMap.put(id,count++); } } List<ThemeEntity> collect = list.stream().filter(o -> indexMap.containsKey(o.getThemeId())) .sorted(Comparator.comparingInt(o -> indexMap.get(o.getThemeId()))) .collect(Collectors.toList()); return collect; } /** * 根据id排序主题对象(同时过滤权限) * @param list * @param recmdIds * @param topicIds * @return */ public static List<ThemeEntity> sortThemeEntityByIds(List<ThemeEntity> list, List<String> recmdIds, Set<String> topicIds){ List<ThemeEntity> themes = list.stream().filter(o -> { if (StringUtils.isBlank(o.getTopicId())) return true; return topicIds.contains(o.getTopicId()); }).collect(Collectors.toList()); return sortThemeEntityByIds(themes, recmdIds); } }