List轉(zhuǎn)換為map
如,一個(gè)用戶列表List<User>轉(zhuǎn)換為Map<id, User>
List<User> userList = UserMapper.getUserList();
...
Map<Integer, User> userMap = userList.stream()
.collect(Collectors.toMap(
User::getId, user -> user)
);
此時(shí)如果userList有重復(fù)user會(huì)報(bào)錯(cuò),那么可以這樣處理:
List<User> userList = UserMapper.getUserList();
...
Map<Integer, User> userMap = userList.stream()
.collect(Collectors.toMap(
User::getId, user -> user, (v1, v2) -> v2)
);
也就是當(dāng)map key重復(fù)時(shí)用v2覆蓋v1.
單獨(dú)取對(duì)象List的某項(xiàng)屬性
比較簡(jiǎn)單,直接上代碼
(從User列表取全部Id)
List<User> userList = UserMapper.getUserList();
...
//map里的方法可以自己定義方法來調(diào)用
List<Integer> ids = userList.stream().map(User::getId).collect(Collectors.toList());
根據(jù)指定屬性排序
stream().sort()結(jié)合Comparator可以用于排序
List<User> userList = UserMapper.getUserList();
...
//根據(jù)score升序排序
List<User> sortedUserList = userList.stream().sort(Comparator.comparing(User::getScore)).collect(Collectors.toList());
//根據(jù)score降序排序
List<User> sortedUserList = userList.stream().sort(Comparator.comparing(User::getScore).reversed()).collect(Collectors.toList());