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);