시그마 삽질==six 시그마

java stream 객체 필드로 sorted 본문

프로그래밍/Java

java stream 객체 필드로 sorted

Ethan Matthew Hunt 2020. 4. 20. 00:36
Stream.of(day1, day2)
    .flatMap(x -> x.stream())
    .map(v->new SeminarSection(v.getDayOrder(),v.getDay()))
    .distinct()
    .sorted(Comparator.comparing((SeminarSection ::getDayOrder)))
    .collect(Collectors.toList());

.sorted(Comparator.comparing((SeminarSection s)->s.getDayOrder))) : 오름차순

.sorted(Comparator.comparing((SeminarSection ::getDayOrder))) : 오름차순

.sorted(Comparator.comparing((SeminarSection ::getDayOrder)).reversed()) : 내림차순

 

        List<Person> list = Arrays.asList(
             new Person.Builder().name("김지혜").age(20).height(185).build()
            , new Person.Builder().name("이정").age(20).height(181).build()
            , new Person.Builder().name("원빈").age(30).height(170).build()
            ,new Person.Builder().name("정우성").age(30).height(190).build()
        );

        Person person = list.stream().max(Comparator.comparing((Person::getHeight))).get();
        System.out.println("person = " + person);


      /* Map<Integer, Person> collect = list.stream().sorted(Comparator.comparing((Person::getHeight)).reversed())
            .collect(Collectors.toMap(Person::getAge, x -> x, (x, y) -> x));
        System.out.println("collect = " + collect);*/

order by 2번이상..

 

Comparator.comparing(Person::getFirstName)

          .thenComparing(Person::getLastName)

          .thenComparing(Person::getAge).reversed();   // 이렇게하면 전체가 reversed된다.

 

Comparator.comparing(Person::getFirstName)

          .thenComparing(Comparator.comparing(Person::getLastName))

          .thenComparing(Comparator.comparing(Person::getAge).reversed()))   //이렇게하면 마지막거만 reversed된다.

 

.sorted(Comparator.comparing(oc->oc.getDto().getUserName(),Comparator.reverseOrder())).collect(Collectors.toList()); //객체의 객체 내부의 필드 reverse

 

 

Map<Long,List<MyEntity>> 에서 Map의 key로 sort 하기

 


myid = myData.stream()

//.sorted(Comparator.comparing(....)   <--optional (정렬된 상태라면 두고 아니면 요기서 정렬)
.collect(Collectors.groupingBy(MyEntity::getDataId,LinkedHashMap::new, toList()));
Would return a LinkedHashMap<Integer, List<MyEntity>>. The order will also be maintained as the list used by collector is ArrayList.

 

https://stackoverflow.com/questions/52192078/collectors-groupingby-returns-result-sorted-in-ascending-order-java

'프로그래밍 > Java' 카테고리의 다른 글

Stream collect 1탄  (0) 2020.08.27
[mac] java 버전 변경 jenv  (0) 2020.08.18
Java stream 객체 필드 수정  (0) 2020.04.16
자바 스트림 null 체크  (0) 2020.04.03
Java 스트림 중첩 리스트내 inner 리스트 사용  (0) 2020.04.03
Comments