List<User> userList =new ArrayList<User>(); userList.add(new User("1",1,"1","1")); userList.add(new User("2",14,"1","2")); userList.add(new User("12",41,"2","2")); userList.add(new User("13",13,"2","1")); userList.add(new User("14",13,"2","2")); Map map = userList.parallelStream().collect( Collectors.groupingBy(User::getCode,//使用code进行分组 Collectors.collectingAndThen( Collectors.reducing((c1,c2) -> c1.getAge().compareTo(c2.getAge())>0 ? c1 :c2), Optional::get )//取分组后年龄最大USER ) ); System.out.println(map);