java8List에서 대상 속성의 무게 제거 실현

2260 단어 JAVA 공부

java8의stream흐름은 대상 집합을 완벽하게 풀 수 있습니다.

        List list1 = new ArrayList();
        UserCar userCar = new UserCar();
        userCar.setId(1);
        userCar.setCarNo("AA");
        list1.add(userCar);

        UserCar userCar1 = new UserCar();
        userCar1.setId(2);
        userCar1.setCarNo("AA");
        list1.add(userCar1);


        Person p1 = new Person(1, "11");
        Person p2 = new Person(1, "22");
        Person p3 = new Person(2, "11");
        List persons = Arrays.asList(p1, p2, p3);

첫 번째:java8을 사용하지 않음
    private List removeDupliByRecordId(List userCars) {
        Set personSet = new TreeSet((o1, o2) ->                                                        o1.getRecordId().compareTo(o2.getRecordId()));
        personSet.addAll(userCars);

        return new ArrayList(personSet);
    }


이것도 대다수 사람들이 가장 먼저 생각하는 것이다. TreeSet을 빌려 무게를 뺀다. 그 중에서 TreeSet의 구조 함수 중 하나가 정렬된 알고리즘을 받아들이는 동시에 이것도TreeSet의 무게 제거 전략에 사용된다.

public TreeSet(Comparator super E> comparator) {
        this(new TreeMap<>(comparator));
    }


두 번째: 시크한java8 쓰기
     List unique = persons.stream().collect(
                Collectors.collectingAndThen(
                        Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Person::getName))), ArrayList::new)
        );
        unique.forEach(p -> System.out.println(p));

세 번째: 시크한java8 쓰기
        List names = new ArrayList<>();// person id

        List personList = persons.stream().filter(//  
                v -> {
                    boolean flag = !names.contains(v.getName());
                    names.add(v.getName());
                    return flag;
                }
        ).collect(Collectors.toList());

작성자: tangerr 원문:https://blog.csdn.net/tangerr/article/details/90349986판권 성명: 본문은 작가의 오리지널 문장입니다. 옮겨 싣기 위해 블로그 링크를 첨부하세요!

좋은 웹페이지 즐겨찾기