java - 如何通过键将列表元素添加到映射?
问题描述
我使用以下方法按键对项目进行排序:
final Map<Integer, UUID> map = new TreeMap<>();
while (rowIterator.hasNext()) {
// Add Items to the TreeMap
mapppp.put(1, UUID.fromString("610e9040-840c-48c5-aa64-f193ed896133"));
mapppp.put(2, UUID.fromString("4ff0055d-49a9-4e93-b960-ff70ae1007ce"));
mapppp.put(3, UUID.fromString("751c79ce-445c-406a-9787-a754857a259c"));
mapppp.put(3, UUID.fromString("dc721d77-509d-4bd3-8004-43a8daab5840"));
mapppp.put(3, UUID.fromString("4ca16aff-5a30-4638-8b38-3a93eddb0fc5"));
mapppp.put(3, UUID.fromString("e4be360b-cccb-42a2-b416-eb4bb623b49f"));
}
但是,我不能为重复的键值(例如 3)添加另一个元素,我认为我应该实现类似Map<Integer, List<UUID>> map = new TreeMap<>();
而不是Map<Integer, UUID> map = new TreeMap<>();
. 但是,我找不到合适的解决方案。那么,如何管理要添加到地图中的重复键值呢?
解决方案
您确实可以Map<Integer, List<UUID>>
按照您的建议使用 a 。然后,如果键不存在,您可以使用computeIfAbsent
创建一个空映射,并将值添加到键:
final Map<Integer, List<UUID>> map = new TreeMap<>();
addToMap(int key, String value) {
mapppp.computeIfAbsent(key, k -> new ArrayList<>()).add(value);
}
推荐阅读
- bash - 如何为 curl 命令传递带空格的密码
- react-native - 如何使用 React Navigation 在 RootStack 设置中将对象发送到姊妹屏幕上的等待函数?
- amazon-web-services - SSL 问题:具有负载均衡器和外部域的 AWS Beanstalk
- reactjs - Material UI 在 value 属性中使用一个对象选择多个组件,添加重复条目
- azure-iot-hub - IoT 中心设备孪生中的 etag 有什么用?
- netsuite - 使用 record.load() 加载子记录
- html - 为什么我的页面没有显示任何引导布局?
- apache-kafka - 来自 Kafka 的 Flink SQL CLI 客户端 CREATE TABLE
- shader - 片段着色器的 Spark AR 脚本中的点积错误
- javascript - 使用 jQuery 添加 onClick 方法