开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情
将大list切分成多个子list
public static void main(String[] args) {
List<String> list = Arrays.asList("a","d","c","w","xx","dds","ii","p","qq","l","k","g","f","d","s","v","c","m","n","z");
int limit = (list.size()+4)/5;
List<List<String>> subLists = Stream.iterate(0,n ->n+1).limit(limit).parallel().map(a ->
list.stream().skip(a*5).limit(5).parallel() .collect(Collectors.toList())).collect(Collectors.toList());
System.out.println(JSON.toJSONString(subLists)); }
输出结果:
[["a","d","c","w","xx"],["dds","ii","p","qq","l"],["k","g","f","d","s"],["v","c","m","n","z"]]
将两个list对象集合某字段属性相同的匹配出来成为新的list
public static void main(String[] args) {
List<XXXModel> ModelCompareList = new ArrayList<>();
XXXModel XXXModel1 = new XXXModel();
XXXModel1.setXxxId("a");
XXXModel XXXModel2 = new XXXModel();
XXXModel2.setXxxId("b");
XXXModel XXXModel3 = new XXXModel();
XXXModel3.setXxxId("c");
XXXModel XXXModel4 = new XXXModel();
XXXModel4.setXxxId("d");
XXXModel XXXModel5 = new XXXModel();
XXXModel5.setXxxId("e");
ModelCompareList.add(XXXModel1);
ModelCompareList.add(XXXModel2);
ModelCompareList.add(XXXModel3);
ModelCompareList.add(XXXModel4);
ModelCompareList.add(XXXModel5);
List<YYYModel> ModelList = new ArrayList<>();
YYYModel YYYModel1 = new YYYModel();
YYYModel1.setXxxId("a");
YYYModel YYYModel2 = new YYYModel();
YYYModel2.setXxxId("b");
YYYModel YYYModel3 = new YYYModel();
YYYModel3.setXxxId("c");
YYYModel YYYModel4 = new YYYModel();
YYYModel4.setXxxId("e");
ModelList.add(YYYModel1);
ModelList.add(YYYModel2);
ModelList.add(YYYModel3);
ModelList.add(YYYModel4);
List<XXXModel> filterResult = ModelList.stream().parallel().filter(r -> ModelCompareList.stream().anyMatch(d ->
Objects.equals( r.getxxId(),d.getxxxId()))).collect(Collectors.toList());
System.out.println(JSON.toJSONString(filterResult));
}
输出结果:
[{"decisionId":"a"},{"decisionId":"b"},{"decisionId":"c"},{"decisionId":"e"}]
java 8常用函数总结
list 排序
pageList.getRecords().stream().sorted(Comparator.comparing(xxxObject::getCreatedRTime).reversed()).collect(Collectors.toList());
带reversed() 就是正序(最新的排在最前)
list分组后再排序
List<Object> list = new ArrayList<>();
List<Object> resultList = new ArrayList<>();
list.stream().collect(Collectors.groupingBy(Object::getStatus)).forEach((k, v) -> {
result.addAll(v.stream().sorted(Comparator.comparing(Object::getCreateTime).reversed()).collect(Collectors.toList()));
});
按字段属性对list集合去重
List<User> collectCost = listCost.stream().collect(Collectors.toMap(User::getAge, a -> a, (r1, r2) -> {
return r1;
})).values().stream().collect(Collectors.toList());
使用java8的日期APi
LocalDate date = LocalDate.now();
LocalDate dateFromClock = LocalDate.now();
LocalTime time = LocalTime.now();
LocalTime timeFromClock = LocalTime.now();
System.out.println(time);
总结
java8 stream表达式,写的时候真的很爽,但是对于对着就有点不太好阅读了,尤其是代码Cr的时候,大家看到这么多的表达式,头都是大的;但是写着还很爽的。 记录在这里就是为了以后自己使用时,可以随用随取;在进行内存分页的时候真的很有用的;