1. 获取对象字段的列表
List idcards= users.stream().map(User::getIdcard).collect(Collectors.toList());
2. 构建列表
List list = fileNames.stream().map(i ->
{
Enclosure enclosure = new Enclosure();
enclosure.setName(i);
enclosure.setUploadTime(new Timestamp(System.currentTimeMillis()));参数错误
enclosure.setPath("testurl" + i);
return enclosure;
}).collect(Collectors.toList());
3. list转map
Map map = users.stream().collect(Collectors.toMap(User::getName, User::getAge));
Map map = users.stream().collect(Collectors.toMap(User::getName, Function.identity()));Map resMap=map.entrySet().stream().collect(Collectors.toMap( entry1 -> entry1.getKey(),entry2 -> entry2.getValue()));
4. 转map时key重复怎么处理
Collectors.toMap(dto->key值,dto->dto,(v1,v2)->v1)
在后面添加(v1,v2)->v1 指定选取第一个值 当key值重复的时候。(根据情况而定选取第一个还是第二个)5. 列表分组转map
Map> groupBy = appleList.stream().collect(Collectors.groupingBy(Apple::getId));6. 过滤列表的信息
List list=persons.stream().filter(p->"0".equals(p.getOtherState())).collect(Collectors.toList());7. 列表信息间隔拼接
String managerPath = managerList.stream().map(String::valueOf).collect(Collectors.joining(","));
8. 字段间隔拼接
String tempStaffNames = CollectionUtil.join(sStaffNames, ",");9. map如何使用key,value
apiMap.forEach((k, v) -> {... ...})
10 .列表删除数据
ArrayList list =new ArrayList();
list.addAll(Arrays.asList("curry","tomphson","kerr"));
list.removeIf(str->str.equals("curry"));
System.out.println(list);11. 列表运算----算平方
List numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
// 获取对应的平方数
List squaresList = numbers.stream().map( i -> i*i).distinct().collect(Collectors.toList());12. 列表运算----单层循环求和
Double totalHc = infos.stream().map(BudgetInfo::getHeadCount).reduce(0d, Double::sum);13. 列表运算----双重循环求和
Double totalAmount= infos.stream().map(
info -> info.getDetailList().stream().map(p->p.getTotalAmount()).reduce(0Double::sum)
).reduce(0d, Double::sum);14. 列表预算----分组求和
Map collect = resList.stream().collect(Collectors.groupingBy(Foo::getCode, Collectors.summarizingInt(Foo::getCount)));15. 列表运算----分组合并后运算
List bussList = new ArrayList<>();
bussList.add(new Buss("a",10,0.3));
bussList.add(new Buss("b",3,0.8));
bussList.add(new Buss("c",5,2.0));
bussList.add(new Buss("b",30,3.2));
bussList.add(new Buss("c",20,0.1));List st = new ArrayList<>();
bussList.stream()
.collect(Collectors.groupingBy(Buss::getName)) //分组(Name can't be null)
.forEach((k,v) -> {
Optional sum = v.stream().reduce((v1,v2) -> { //合并
v1.setCount(v1.getCount()+v2.getCount());
v1.setValue(v1.getValue()+v2.getValue());
return v1;
});
st.add(sum.orElse(new Buss("other",0,0.0)));});
System.out.println(st);或者
BillsNums billsNums = new BillsNums();
billsNums.setId("1001");
billsNums.setNums(2);
billsNums.setSums(100);
billsNumsList.add(billsNums);
BillsNums billsNums2 = new BillsNums();
billsNums2.setId("1001");
billsNums2.setNums(3);
billsNums2.setSums(100);
billsNumsList.add(billsNums2);List result = list.stream()
// 表示id为key, 接着如果有重复的,那么从BillsNums对象o1与o2中筛选出一个,这里选择o1,
// 并把id重复,需要将nums和sums与o1进行合并的o2, 赋值给o1,最后返回o1
.collect(Collectors.toMap(BillsNums::getId, a -> a, (o1,o2)-> {
o1.setNums(o1.getNums() + o2.getNums());
o1.setSums(o1.getSums() + o2.getSums());
return o1;
})).values().stream().collect(Collectors.toList());
jdk8 Lambda,stream,juc 新特性
版权声明:本文为jim_007原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。