1. List轉map 注意點,處理重複問題
/**
* 重複時用後面的value 覆蓋前面的value
*/
Map<String, String> map = list.stream().collect(Collectors.toMap(Person::getId, Person::getName,(key1 , key2)-> key2 ));
/**
* 重複時將前面的value 和後面的value拼接起來
*/
Map<String, String> map = list.stream().collect(Collectors.toMap(Person::getId, Person::getName,(key1 , key2)-> key1+","+key2 ));
/**
* 重複時將重複key的數據組成集合
*/
Map<String, List<String>> map = list.stream().collect(Collectors.toMap(Person::getId,
p -> {
List<String> getNameList = new ArrayList<>();
getNameList.add(p.getName());
return getNameList;
},
(List<String> value1, List<String> value2) -> {
value1.addAll(value2);
return value1;
}
));
2.List獲取其中某個字段轉List
List<String> result = list.stream().map(student -> student.getName()).collect(Collectors.toList());
3.排序
下面代碼以自然序排序一個list
list.stream().sorted()
自然序逆序元素,使用Comparator 提供的reverseOrder() 方法
list.stream().sorted(Comparator.reverseOrder())
使用Comparator 來排序一個list
list.stream().sorted(Comparator.comparing(Student::getAge))
把上面的元素逆序
list.stream().sorted(Comparator.comparing(Student::getAge).reversed())