我有以下串列:
List<String> courses = List.of("Spring", "Spring Boot", "API", "Microservices",
"AWS", "PCF", "Azure", "Docker", "Kubernetes");
我想按 course.length() 對這個串列進行排序,但它必須顛倒過來。這是預期的輸出:
Microservices
Spring Boot
Kubernetes
Docker
Spring
Azure
PCF
AWS
API
這是我正在處理的代碼行,但它不起作用:
courses.stream().sorted(Comparator.comparing(word -> word.length()).reversed())
如果有人能伸出援手,我真的很感激。
uj5u.com熱心網友回復:
我們可以在這里使用的一個技巧是在排序時使用字串長度的負值:
List<String> courses = List.of("Spring", "Spring Boot", "API", "Microservices",
"AWS", "PCF", "Azure", "Docker", "Kubernetes");
courses = courses.stream().sorted(Comparator.comparing(word -> -1.0*word.length())).collect(Collectors.toList());
System.out.println(courses);
這列印:
[Microservices, Spring Boot, Kubernetes, Spring, Docker, Azure, API, AWS, PCF]
uj5u.com熱心網友回復:
反轉回傳型別的物件Object。你需要一個演員:
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class App {
public static void main(String[] args) throws Exception {
List<String> courses = List.of("Spring", "Spring Boot", "API", "Microservices", "AWS", "PCF", "Azure", "Docker", "Kubernetes");
courses = courses.stream().sorted(Comparator.comparingInt(x -> ((String) x).length()).thenComparing(Comparator.comparing(x -> x.toString())).reversed()).collect(Collectors.toList());
courses.stream().forEach(System.out::println);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/486474.html
