HashMap 排序

                   HashMap 对象数值排序,计算最高出现频率

1. 对象


/**
 * 
* @ClassName: TrajectoryInfo  
* @Description: 轨迹对象的详细信息
* @date 2018年9月7日  
*
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(indexName = "#{esIndex.index}", type = "trajectory", shards = 3, replicas = 2)
public class TrajectoryInfo {
    @Id
    private String id;
    /*
     *  VIP 用户ID
     */
    private String userId;
    
    private List<String> trajectoryList;
    
    /*
     * 轨迹时间戳
     */
    private Long trajectoryTime;
    /*
     * 轨迹时间
     */
    private String trajectoryDate;
    
    
}

2. 数组排序

 /**
     * 数组排序
     */
    public static List<String> sortList(List<TrajectoryInfo> infos) {
        Map<List<String>, Integer> map = new HashMap<>();
        for (TrajectoryInfo info : infos) {
            Integer count = map.get(info.getTrajectoryList());
            map.put(info.getTrajectoryList(), (count == null) ? 1 : count + 1);
        }
        Map<List<String>, Integer> result = new LinkedHashMap<>();
        // sort by key, a,b,c..., and put it into the "result" map
        map.entrySet().stream().sorted(Map.Entry.<List<String>, Integer>comparingByValue().reversed())
                .forEachOrdered(x -> result.put(x.getKey(), x.getValue()));

        Set<List<String>> set = result.keySet();
        Iterator<List<String>> it = set.iterator();

        List<String> list = null;

        while (it.hasNext()) {
            list = it.next();
            break;
        }

        return list;
    }
    

3.测试

List<TrajectoryInfo> infos  = new ArrayList<>();
        
        TrajectoryInfo info1 = new TrajectoryInfo();
        TrajectoryInfo info2 = new TrajectoryInfo();
        TrajectoryInfo info3 = new TrajectoryInfo();
        
        List<String> list1 = new ArrayList<>();
        List<String> list2 = new ArrayList<>();
        List<String> list3 = new ArrayList<>();
        
        list1.add("1");
        list1.add("3");
        
        list2.add("1");
        list2.add("2");
        
        list3.add("1");
        list3.add("3");
        
        info1.setTrajectoryList(list1);
        info2.setTrajectoryList(list2);
        info3.setTrajectoryList(list3);
        
        infos.add(info1);
        infos.add(info2);
        infos.add(info3);
        
        System.out.println(sortList(infos));

4.结果

如图所示,说明排序是有效的

猜你喜欢

转载自blog.csdn.net/m0_37598953/article/details/85099399