Java8之集合List

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();
  1. 过滤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(), ",");
  1. List<对象> 转 Map<String,List<字符串>>
Map<String,List<String>> noticeMap = noticeApplyList.stream().collect(
                    Collectors.groupingBy(ResourceApplyFormEntity::getAssignor, Collectors.mapping(ResourceApplyFormEntity::getApplyId,Collectors.toList())));
  1. 根据某个字段非空排序
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());
  1. 转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());
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值