1.取出list中的对象的某一属性返回list
List<String> courseIds= users.stream().map(UserEntity::getUserName).collect(Collectors.toList());
2.根据判断删除列表list中的元素
intersects.removeIf(cr -> cr.getId() == 4);
3.List转String
List lists = Arrays.asList(“1”,“2”,“3”,“4”,“5”);
#方法一
String str1= String.join("," , lists);
#方法二
String str2 = lists.stream().collect(Collectors.joining(","))
4.List 转 数组
ArrayList<String> list=new ArrayList<String>();
String[] strings = new String[list.size()];
list.toArray(strings);
5.两个list判断以某个字段为标准获取交集
public int find(long id, List<CloudRegion> list) {
int res = -1;
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getId() == id) {
res = i;
break;
}
}
return res;
}
List<CloudRegion> intersects = prodRegionIds.stream().filter(re -> find(re.getId(), deptRegionIds) > -1).collect(Collectors.toList());
6.list集合统计总数
Map<String, Integer> map = list.stream().collect(Collectors.groupingBy(Student::getName, Collectors.summingInt(s -> s.getGrade())));
map.forEach((k,v)-> System.out.println("姓名: "+k+"-----> "+v+"分"));
7.排序
List<TestBean> listNew = list.stream().filter(testBean -> testBean != null && testBean.getSortNum() != null)
.sorted(Comparator.comparing(TestBean::getSortNum)).collect(Collectors.toList());
8.数据库字段结构转驼峰结构
List<Map<String, Object>> resultList = (List<Map<String, Object>>) resData.getList();
List<Map<String, Object>> list = resultList.stream().map(MapUtil::toCamelCaseMap).collect(Collectors.toList());
9.去重
List<String> parentNodes = imageResDTOS.stream().map(ImageResDTO::getImageOwnerAlias).distinct().collect(Collectors.toList());
10.对象去重
List<ImageResDTO> list =imageResDTOS.stream().collect(
Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getPlatform()))),
ArrayList::new));
11.获取list中特定属性值的对象
Optional<Cart> cartOptional = cartlist.stream().filter(item -> item.getProductId().equals(1L)).findFirst();
if (cartOptional.isPresent()) {
// 存在
Cart cart = cartOptional.get();
} else {
// 不存在
}
或者是:
Cart cart = cartlist.stream().filter(item -> item.getProductId().equals(1L)).findFirst().get();
- 过滤list中对象的某个属性非空,然后返回一个新的list
List<UserPO> newUsers = users.stream().filter((UserPO user) -> user.getId() !=null).collect(Collectors.toList());
List<String> phoneNumberList = phoneNumbers.stream().map(phone -> aesService.decryptAes(phone)).collect(Collectors.toList());
13.不为null时才过滤值
List<String> carsFiltered = Optional.ofNullable(cars)
.orElseGet(Collections::emptyList)
.stream()
.filter(Objects::nonNull) //filtering car object that are null
.map(Car::getName) //now it's a stream of Strings
.filter(Objects::nonNull) //filtering null in Strings
.filter(name -> name.startsWith("M"))
.collect(Collectors.toList()); //back to List of Strings
14.将 List 转为 Map<String, T>
Map<String, User> map = users.stream().collect(Collectors.toMap(User::getName, Function.identity()));
// 如果 key 重复, 则根据 冲突方法 ·(key1, key2) -> key2· 判断. 解释: key1 key2 冲突时 取 key2
Map<String, User> map = users.stream().collect(Collectors.toMap(User::getName, Function.identity(), (key1, key2) -> key2));
Map<Long, String> maps = userList.stream().collect(Collectors.toMap(User::getId, User::getAge, (key1, key2) -> key2));
List 转为 Map<String, String>
Map<String, String> userMap = users.stream().collect(Collectors.toMap(SysUserEntity::getUsername, SysUserEntity::getMobile));
判断null
//解决方案一,使用Optional类处理null
HashMap<String, String> cityProvinceMap = cityProvinceList.stream().collect(Collectors.toMap(s -> Optional.ofNullable(s.getCityName()).orElse(null), s -> Optional.ofNullable(s.getProvince()).orElse("unknown"), (a, b) -> b, HashMap::new));
//解决方案二,直接使用collect()方法进行规约操作
HashMap<String, String> cityProvinceMap2 = cityProvinceList.stream().collect(HashMap::new, (map, item) -> map.put(item.getCityName(), item.getProvince()), HashMap::putAll);
15.分组转map
Map<String, List<DiskInstanceHistoryEntity>> collect = cloudInstances.stream().collect(Collectors.groupingBy(DiskInstanceHistoryEntity::getCloudProductInstanceId));
16.取list数据之后根据某个字段用逗号拼接
String result = list.stream().map(String::valueOf).collect(Collectors.joining(","));
StringUtils.join(v.toArray(), ",");
- List<对象> 转 Map<String,List<字符串>>
Map<String,List<String>> noticeMap = noticeApplyList.stream().collect(
Collectors.groupingBy(ResourceApplyFormEntity::getAssignor, Collectors.mapping(ResourceApplyFormEntity::getApplyId,Collectors.toList())));
- 根据某个字段非空排序
List<QuotaManageDTO> collect = result.stream()
.sorted(Comparator.comparing(dto -> dto.getDeptQuota() != null ? 0 : 1))
.collect(Collectors.toList());
List<ChildInstanceInfoDTO> collect = childInstanceInfoDTOS.stream().sorted(Comparator.comparing(ChildInstanceInfoDTO::getDefaultNode).reversed()).collect(Collectors.toList());
- 转set集合,并取交集
Set<Integer> deptIdSet = cloudDepartments.stream()
.map(CloudDepartmentDTO::getCloudDeptId).map(Integer::parseInt).collect(Collectors.toSet());
List<GetUserKeysResDTO> userKeys = userKeys.stream()
.filter(user -> deptIdSet.contains(user.getOrganizationId()))
.collect(Collectors.toList());