代码例子 //测试数据类 @Data @Accessors(chain = true) //开启链式编程 static class Test{ Long id; Integer type; BigDecimal money; } ArrayList<Test> list = Lists.newArrayList( new Test().setId(1L).setType(1).setMoney(BigDecimal.ONE), new Test().setId(1L).setType(2).setMoney(BigDecimal.TEN), new Test().setId(1L).setType(1).setMoney(BigDecimal.ZERO), new Test().setId(1L).setType(2).setMoney(BigDecimal.ONE), new Test().setId(1L).setType(3).setMoney(BigDecimal.valueOf(5)) ); // value 传递一个Function.identity()函数,返回一个输出跟输入一样的Lambda表达式对象,也就是返回Test对象本身 // 需要注意的是:toMap 如果集合对象有重复的key,会报错Duplicate key.... apple1,apple12的id都为1。可以用 (k1,k2) -> k1 来设置,如果有重复的key,则保留key1,舍弃key2 Map<Integer, Test> collect = list.stream().collect(Collectors.toMap(Test::getType, Function.identity(), (k1, k2) -> k1)); System.out.println("collect = " + collect); //运行结果 collect = {1=Test(id=1, type=1, money=1), 2=Test(id=1, type=2, money=10), 3=Test(id=1, type=3, money=5)}