jdk8 Convert List to Map
示例
public void testListToMap() { List<User> users = new ArrayList<User>(); users.add(new User("tom", 18, "男")); users.add(new User("lucy", 20, "女")); users.add(new User("诸葛亮", 21, "男")); users.add(new User("刘备", 20, "男")); Map<String, Integer> userAges = users.stream().collect(Collectors.toMap(User::getUsername, User::getAge)); Set<Map.Entry<String, Integer>> entries = userAges.entrySet(); entries.forEach(entry -> { System.out.println(entry.getKey() + ":" + entry.getValue()); }); /** * 重复key */ Map<Integer, String> ageAndUser = users.stream().collect(Collectors.toMap(User::getAge, User::getUsername, (oldVal, newval) -> newval)); Set<Map.Entry<Integer, String>> entrySet = ageAndUser.entrySet(); entrySet.forEach(entry -> { System.out.println(entry.getKey() + "--" + entry.getValue()); }); /** * 收集实体本身 */ Map<String, User> nameUsers = users.stream().collect(Collectors.toMap(User::getUsername, user -> user)); Set<Map.Entry<String, User>> entries1 = nameUsers.entrySet(); entries1.forEach(entry -> { System.out.println(entry.getKey() + "+++" + entry.getValue()); }); }
输出
tom:18 刘备:20 诸葛亮:21 lucy:20 18--tom 20--刘备 21--诸葛亮 tom+++User{username='tom', age=18, sex='男'} 刘备+++User{username='刘备', age=20, sex='男'} 诸葛亮+++User{username='诸葛亮', age=21, sex='男'} lucy+++User{username='lucy', age=20, sex='女'}
立志如山 静心求实
浙公网安备 33010602011771号