[Java]Stream用法

  1. 【[Java]Stream用法】将list转为map
    Map itemMap = items.stream().collect(Collectors.toMap(ItemTO::getEventId, Function.identity(), (v1, v2)->v1));

  2. List中对象的某个属性值拿出来作为一个list
// 去重 List ids = items.stream().map(ItemTO::getId).distinct().collect(Collectors.toList()); // 不去重 List ids = items.stream().map(ItemTO::getId).collect(Collectors.toList());

  1. 将list转为Map
Map> itemListMap = itemList.stream().collect(Collectors.groupingBy(item -> item.getId())); Map itemMap = items.stream().collect(Collectors.toMap(ItemTO::getEventId, Function.identity(), (v1, v2)->v1));

  1. 将list中的string转为long
List idList = groupList.stream().map(group->Long.parseLong(group.getGroupLeaderId())).collect(Collectors.toList());

  1. 过滤操作
groupIdList.stream().filter(x -> x!=null).collect(Collectors.toList()); List allPlatformIids = allStoreItemIndexResultTOS.stream().filter(t -> StoreItemTypeEnum.PLATFORM.getType() .equals(t.getType())).map(StoreItemIndexResultTO::getIid).collect(Collectors.toList()); //过滤采购数量为0的sku List skuCollectList = skuInfoTOList.stream(). filter(e -> e.getNum() > 0).collect(Collectors.toList()); /** * 在订单列表中过滤指定的oid * @param effectiveLists * @param oid * @return */ private List filterOrder(List itmeList, long oid) { return itmeList.stream().filter(p -> { if (p.getOid().equals(oid)) { return false; } return true; }).collect(Collectors.toList()); }

  1. 将list中对象的两个属性值分别作为map的key和value
itemList.stream().filter(t -> t.getId() != null) .collect(Collectors.toMap(ItemTO::getId, ItemTO::getName, (k1, k2)->k2));

  1. 对list做操作
// 交集 List intersection = list1.stream().filter(item -> list2.contains(item)).collect(toList()); // 差集 (list1 - list2) List reduce1 = list1.stream().filter(item -> !list2.contains(item)).collect(toList()); // 差集 (list2 - list1) List reduce2 = list2.stream().filter(item -> !list1.contains(item)).collect(toList()); // 并集 List listAll = list1.parallelStream().collect(toList()); List listAll2 = list2.parallelStream().collect(toList()); listAll.addAll(listAll2); // 去重并集 List listAllDistinct = listAll.stream().distinct().collect(toList()); System.out.println("---得到去重并集 listAllDistinct---“); // 循环输出 listAllDistinct.parallelStream().forEachOrdered(System.out :: println);

  1. map的操作,移除
// 通过value移除 map.values().removeIf(value -> !value.contains("1")); // 通过key移除 map.keySet().removeIf(key -> key != 1); // key或者value移除 map.entrySet().removeIf(entry -> entry.getKey() != 1);

  1. 排序操作
// 升序 itemList = itemList.stream().sorted(Comparator.comparingInt(ItemTO::getPtPrice)).collect(Collectors.toList()); // 降叙 itemList = itemList.stream().sorted(Comparator.comparingInt(ItemTO::getPtPrice).reversed()).collect(Collectors.toList());

  1. groupBy操作
//a Map> exhibitionPitemMap = list.stream().collect(Collectors.groupingBy(TestDTO1::getLevle1CategoryId, Collectors.mapping(TestDTO1::getPitemId, Collectors.toList()))); //b Map> categoryPitemMap = list.stream().collect(Collectors.groupingBy(TestDTO2::getLevle1CategoryId));

  1. map转list用法
Map map = new HashMap<>(); // Convert all Map keys to a List List result = new ArrayList(map.keySet()); // Convert all Map values to a List List result2 = new ArrayList(map.values()); // Java 8, Convert all Map keys to a List List result3 = map.keySet().stream() .collect(Collectors.toList()); // Java 8, Convert all Map values to a List List result4 = map.values().stream() .collect(Collectors.toList()); // Java 8, seem a bit long, but you can enjoy the Stream features like filter and etc. List result5 = map.values().stream() .filter(x -> !"apple".equalsIgnoreCase(x)) .collect(Collectors.toList());

    推荐阅读