1.sorted作用
回傳由此流的元素組成的流,按照自然順序排序,簡單的來說就是排序,可以自定義排序方法,也可以使用Comparator的compring方法按指定的資料排序,
2.sorted使用
2.1自然排序
List<Integer> list2 = new ArrayList<Integer>();
list2.add(15);
list2.add(10);
list2.add(5);
Object[] object = list2.stream().sorted().toArray();
for (Object p:object) {
System.out.println(p);
}
結果:

2.2自然排序的倒序
//按照年齡排序的倒序
List<Person> list = new ArrayList<Person>();
list.add(new Person(21,"張三"));
list.add(new Person(14,"王二"));
list.add(new Person(28,"李四"));
list.add(new Person(11,"王路飛"));
Object[] object = list.stream().sorted(Comparator.comparing(Person::getAge)).toArray();
for (Object p:object) {
System.out.println(p);
}
結果

2.3多次排序
先年齡排序,再按姓名(都是升序)
Object[] object = list.stream().sorted(Comparator.comparing(Person::getAge).thenComparing(Person::getName)).toArray();
結果

先按年齡降序,再按姓名升序
Object[] object = list.stream().sorted(Comparator.comparing(Person::getAge).reversed().thenComparing(Person::getName)).toArray();
for (Object p:object) {
System.out.println(p);
}
結果

2.4自定義排序(用到lamda運算式)
年齡升序
Object[] object = list.stream().sorted((o1, o2) -> {
int o1Age = o1.getAge();
int o2Age = o2.getAge();
return o1Age-o2Age;
}).toArray();
結果

3.排序后只想要姓名
排序完成后利用stream的map()方法
Object[] object = list.stream().sorted((o1, o2) -> {
int o1Age = o1.getAge();
int o2Age = o2.getAge();
return o1Age-o2Age;
}).map(Person::getName).toArray();
for (Object p:object) {
System.out.println(p);
}
結果

4.排序后轉集合
以上方法全部轉換成的陣列
轉換集合:
List<Person> list1 = list.stream().sorted((o1, o2) -> {
int o1Age = o1.getAge();
int o2Age = o2.getAge();
return o1Age-o2Age;
}).collect(Collectors.toList());
System.out.println(list1);
結果:

轉換成集合的話,若想使用map匹配想要的資料,那么List<>里的泛型要和匹配后的資料型別一致,例如我想要姓名,那么泛型里傳String,當然也可以省略不寫泛型,可以接受任何型別的資料
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/276701.html
標籤:其他
下一篇:3、搭建rtmp視頻推流服務器
