스트림 API를 사용하여 조건 행을 정렬하는 방법

Mefisto_Fell :

내가 스트림 API를 공부하고, 나는이 작업을해야합니다. 나는 여러 줄의 길이가 같은 경우, 다음 종류의 그들 순으로, 그 길이의 순서대로 목록 모음을 정렬 할 필요가있다.

내 코드 :

List<String> phones = new ArrayList<String>();
    Collections.addAll(phones, "iPhone X", "Nokia 9", "Huawei Nexus 6P",
            "Samsung Galaxy S8", "LG G6", "Xiaomi MI6", "Sony Xperia Z5",
            "ASUS Zenfone 3", "Meizu Pro 6", "Heizu Pro 6",
            "Pixel 2");

phones.stream().sorted(Comparator.comparingInt(String::length).reversed()).forEach(System.out::println);

나는이 출력을 가지고 :

Samsung Galaxy S8
Huawei Nexus 6P
Sony Xperia Z5
ASUS Zenfone 3
Meizu Pro 6 
Heizu Pro 6
Xiaomi MI6
iPhone X
Nokia 9
Pixel 2
LG G6

당신은 라인을 참조로

 Sony Xperia Z5
 ASUS Zenfone 3

그리고 라인 :

    Meizu Pro 6 
    Heizu Pro 6

하지만 내 결과가 있어야합니다 :

Samsung Galaxy S8
Huawei Nexus 6P
ASUS Zenfone 3
Sony Xperia Z5
Heizu Pro 6
Meizu Pro 6 
Xiaomi MI6
iPhone X
Nokia 9
Pixel 2
LG G6

길이가 같은 경우, 다음 정렬 알파벳이되도록 어떻게 코드를 향상시킬 수 있습니까?

어떻게 우리가 목록에서 수집 결과를 할 수>? 어디 List <Pair <String, Long>예를 들어 :

String a = Abcd;
list.add(new Pair(a, a.length));
찰스 Dowbecki :

추가 thenComparing()보조 정렬 순서를 만들려면 비교기 체인. 기본 정렬이 충분하지 않을 때 그것은이 적용됩니다 :

phones.stream()
      .sorted(Comparator.comparingInt(String::length).reversed()
                        .thenComparing(Function.identity()))
      .forEach(System.out::println);

추천

출처http://43.154.161.224:23101/article/api/json?id=200314&siteId=1