关于java:JavaStream用法

10次阅读

共计 3460 个字符,预计需要花费 9 分钟才能阅读完成。

  1. 将 list 转为 map

    Map<Long, ItemTO> itemMap =
        items.stream().collect(Collectors.toMap(ItemTO::getEventId, Function.identity(), (v1, v2)->v1));
  2. List 中对象的某个属性值拿进去作为一个 list
// 去重
List<Long> ids = items.stream().map(ItemTO::getId).distinct().collect(Collectors.toList());

// 不去重
List<Long> ids = items.stream().map(ItemTO::getId).collect(Collectors.toList());
  1. 将 list 转为 Map<Long, List>
Map<Long, List<ItemTO>> itemListMap = itemList.stream().collect(Collectors.groupingBy(item -> item.getId()));

Map<Long, ItemTO> itemMap =
        items.stream().collect(Collectors.toMap(ItemTO::getEventId, Function.identity(), (v1, v2)->v1));
  1. 将 list 中的 string 转为 long
List<Long> idList = groupList.stream().map(group->Long.parseLong(group.getGroupLeaderId())).collect(Collectors.toList());
  1. 过滤操作
groupIdList.stream().filter(x -> x!=null).collect(Collectors.toList());


List<Long> allPlatformIids = allStoreItemIndexResultTOS.stream().filter(t -> StoreItemTypeEnum.PLATFORM.getType()
      .equals(t.getType())).map(StoreItemIndexResultTO::getIid).collect(Collectors.toList());

// 过滤洽购数量为 0 的 sku
List<ObmSkuInfoTO> skuCollectList = skuInfoTOList.stream().
        filter(e -> e.getNum() > 0).collect(Collectors.toList());


/**
 * 在订单列表中过滤指定的 oid
 * @param effectiveLists
 * @param oid
 * @return
 */
private List<ItemTO> filterOrder(List<ItemTO> 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<String> intersection = list1.stream().filter(item -> list2.contains(item)).collect(toList());

// 差集 (list1 - list2)
List<String> reduce1 = list1.stream().filter(item -> !list2.contains(item)).collect(toList());

// 差集 (list2 - list1)
List<String> reduce2 = list2.stream().filter(item -> !list1.contains(item)).collect(toList());

// 并集
List<String> listAll = list1.parallelStream().collect(toList());
List<String> listAll2 = list2.parallelStream().collect(toList());
listAll.addAll(listAll2);

// 去重并集
List<String> 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<Long,List<Long>> exhibitionPitemMap = list.stream().collect(Collectors.groupingBy(TestDTO1::getLevle1CategoryId, Collectors.mapping(TestDTO1::getPitemId, Collectors.toList())));
//b
Map<Long, List<TestDTO2>> categoryPitemMap = list.stream().collect(Collectors.groupingBy(TestDTO2::getLevle1CategoryId));
  1. map 转 list 用法
Map<String, String> map = new HashMap<>(); 
// Convert all Map keys to a List
List<String> result = new ArrayList(map.keySet()); 

// Convert all Map values to a List
List<String> result2 = new ArrayList(map.values()); 

// Java 8, Convert all Map keys to a List
List<String> result3 = map.keySet().stream() .collect(Collectors.toList());

// Java 8, Convert all Map values to a List
List<String> 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<String> result5 = map.values().stream() .filter(x -> !"apple".equalsIgnoreCase(x)) .collect(Collectors.toList());

正文完
 0