lambda基本使用
1.将List转成Map<Id,Person>
Map<Id,Person> map = list.parallelStream(). collect(Collectors.toMap(Person::getId, p -> p));
2.将List按照sex分组
Map<String,Person> map = list.parallelStream(). collect(Collectors.groupingBy(Person::getSex));
3.取出List的平均score
dobble avg = list.parallelStream(). mapToDouble(p -> p.getScore()).average().getAsDouble();
4.取出List中id为10的学生
Optional op = list.parallelStream().filter(p -> p.getId().equals(10)).findFirst(); Person p = op.get();
5.取出List中所有的id
List ids = list.parallelSream().map(Person::getId).collect(Collectors.toList());
6.根据score,取前100名 (降序)
List persons =list.parallelStream(). sorted(Comparator.comparing(Person::getScore()).reversed()). limit(100).collect(Collectors.toList()); //使用guava List peopleList1 = Ordering.natural().onResultOf(People::getId).sortedCopy(peopleList);
7.取出分数最高的学生信息
Person person = list.parallelStream().max(Comparator.comparing(Person::getScore()).get();
// 只能取出最小的ID 不能取出整个对象
Integer min = Ordering.natural().reverse().min(Iterables.transform(peopleList, People::getId));
8.算所有学生的分数
Long sum = list.parallelStream().map(Person::getScore).reduce((x1,x2) -> x1+x2).get();
9.求所有金钱总和
BigDecimal money = list.parallelStream().map(Person::getMoney).reduce(BigDecimal::add).get();
10.取出两个不同List对象中相等的Id
11.剔除List 中金钱一样的对象
- Collection values = list.parallelStream(). collect(Collectors.toMap(Person::getMoney, p -> p , (p,q) -> p)).values();
12.将List转成Map<Long,List>。
(如果需要,可以转成Map<String,List>等等)
Map<Long, List> result = listHello.stream().collect(Collectors.groupingBy(Person::getId));
13.CompletableFuture结合lambda异步执行并汇总
14.对象转map
Map<String, String> collect = privilegeObjList.stream().collect(Collectors.toMap(PlatformPrivilegeF::getModuleNo, PlatformPrivilegeF::getPrivilege));
15.把对象的moduleNo当Map的key,privilege当map的value List集合元素。
Map<String, List> map = privilegeObjList.stream().collect( Collectors.groupingBy(PlatformPrivilegeF::getModuleNo, Collectors.mapping(PlatformPrivilegeF::getPrivilege, Collectors.toList())));