Intro Java8 Object List To Map
這篇介紹Java8 Object List To Map。
Example
1 2 3 4 5 6 7 8 9 10 11
| List data structure: User (Long Id, String username) List<User> userList = new ArrayList<>(); userList.add(new User(1L, "aaa")); userList.add(new User(2L, "bbb")); userList.add(new User(3L, "ccc")); userList.add(new User(2L, "ddd")); userList.add(new User(3L, "eee"));
1.Map<Long, String> map = userList.stream().collect(Collectors.toMap(User::getId, User::getUsername); Error: java.lang.IllegalStateException: Duplicate key bbb
|
解決方法
1 2 3 4 5 6 7 8 9
| 1.Map<Long, String> map = userList.stream().collect(Collectors.toMap(User::getId, User::getUsername, (v1, v2) -> v1)); //取前面的值 2.Map<Long, String> map = userList.stream().collect(Collectors.toMap(User::getId, User::getUsername, (v1, v2) -> v2)); //取後面的值 3.Map<Long, List<String>> map = userList.stream().collect(Collectors.toMap(User::getId, e -> new ArrayList<String>(Arrays.asList(e.getUsername())), (List<String> oldList, List<String> newList) -> { oldList.addAll(newList); return oldList; })); //相同的key,把不同的value存在同一個List<String>
|