利用一:
当须要将Model类中的某个属性(例如编号no)和实体类一一对应时,通过编号就能疾速查找到须要的Model实体
model, (k1, k2) -> k1 这里的意思是,如果有key雷同的实体,取前一个。
// models可自定义List<Model> models;Map<String, Model> map = models.stream().collect(Collectors.toMap(Model::getNo, model -> model, (k1, k2) -> k1));
如果须要筛选出两个key雷同的实体中符合要求的一个,能够这样做:
value -> value, (k1, k2) -> no.equals(k1.getNo()) ? k1 : k2 这里的意思是,如果两个key雷同的实体,取和no相等key对应的model。
String no;List<Model> models;Map<String, Model> map = models.stream().collect(Collectors.toMap(Model::getNo, value -> value, (k1, k2) -> no.equals(k1.getNo()) ? k1 : k2));
利用二:
从models列表中获取所有的某个属性值(例子里是no),造成Set
List<Model> models;Set<String> stringSet = models.stream().map(Model::getNo).collect(Collectors.toSet());
利用三:
能够算是利用二的补充,如果咱们须要过滤出models中每个编号不蕴含在Set nos中的model,则能够用到filter进行过滤,再造成List
Set<String> nos;List<Model> models;List<Model> res = models.stream().filter(model -> !nos.contains(model.getSkuNo())).collect(Collectors.toList());