一、list之间进行转换
1.从list集合中提取某一个字段,到一个list集合中
例:从userList的集合中提取出phoneNum字段
1.1.方式一
List<String> phoneNumList = userList.stream()
.map(UserEntity -> UserEntity.getPhoneNum())
.collect(Collectors.toList());
1.2.方式二
List<String> phoneNumList = Lists.transform
(userList,UserEntity -> UserEntity.getPhoneNum());
2.list集合取交集、差集、并集
2.1.交集
List<String> newList = list1.stream()
.filter(item -> list2.contains(item)).collect(toList());
2.2.差集
List<String> newList = list1.stream()
.filter(item -> !list2.contains(item)).collect(toList());
2.3.并集
List<String> listAll = list1.parallelStream().collect(toList());
List<String> listAll2 = list2.parallelStream().collect(toList());
listAll.addAll(listAll2);
List<String> newList = listAll.stream().distinct().collect(toList());
二、list与set转换
1.list->set
Set< T > set = new HashSet(userList);
2.set->list
List< T > list = new ArrayList(set);
三、list与map转换
1.List<T> -->Map<String, T>
Map<Integer, Pig> mapById = pigs.stream()
.collect(Collectors.toMap(
Pig::getId,
a -> a,
(k1, k2) -> k1));
mapById.forEach((k, v) -> {
System.out.println(k + " -> " + v.toString());
});
2.List<T> --> Map<String, List<T>>
Map<String, List<Pig>> groupByGender = pigs.stream()
.collect(Collectors.groupingBy(Pig::getGender));
groupByGender.forEach((k, v) -> {
System.out.println(k + " -> " + v);
});
3.List<T> --> Map<String, Count>
Map<String, Long> groupByGenderThenCount = pigs.stream()
.collect(Collectors.groupingBy(
Pig::getGender,
Collectors.counting()
));
groupByGenderThenCount.forEach((k, v) -> {
System.out.println(k + " -> " + v);
});
4.List<T> --> Map<ID, String>
Map<Integer, String> genderNameMap = pigs.stream()
.collect(Collectors.toMap(
Pig::getId,
pig -> pig.getName() == null ? "" : pig.getName(),
(oldValue, newValue) -> newValue));
genderNameMap.forEach((k, v) -> {
System.out.println(k + " -> " + v.toString());
});