java8 lambda 統計list中對象的重複次數

package com.example.java8;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @Description TODO
 * @Author wuqingyan
 * Date 2020/3/2 17:50
 * Modify Log
 **/
public class ListTest {
    public static void main(String[] args) {


        List<User> list = new ArrayList();//原始庫位
        list.add(new User("123",18));
        list.add(new User("456",18));
        list.add(new User("123",18));
        list.add(new User("",18));
        list.add(new User("",18));



        List<User> list1 = new ArrayList(); //庫位限制後庫位
        list1.add(new User("123",18));
        list1.add(new User("456",18));
        list1.add(new User("",18));
        list1.add(new User("",18));

        //原始庫位統計map
        Map<String, Long> map1 = list.stream().collect(Collectors.groupingBy(p -> p.getName(),Collectors.counting()));
        System.out.println(map1.toString());

        //限制後統計map
        Map<String, Long> map2 = list1.stream().collect(Collectors.groupingBy(p -> p.getName(),Collectors.counting()));
        System.out.println(map2.toString());

        List<User> list2 = new ArrayList<>();
        //取出不滿足條件的map  限制後的次數
        for(String s:map2.keySet()){
            if(map2.get(s) == map1.get(s)){
                list2.addAll(list1.parallelStream().filter(a -> a.getName().equals(s)).collect(Collectors.toList()));
            }
        }

        System.out.println(list2.toString());

    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章