如何解决如何将另一个元素作为列表插入到 TreeMap 值中
所以我仍在学习 Java 映射,只是想知道是否可以将另一个元素作为列表插入到 TreeMap 值中?所以这是我的代码:
TreeMap<String,List<Integer>> myTree = new TreeMap<>();
String info = "Andi 20";
Integer extra = 100;
String[] temp = info.split(" ");
myTree.put(temp[0],Collections.singletonList(Integer.parseInt(temp[1]))); // {Andi : [20]}
如何将另一个元素(例如:Integer extra)插入到值列表中?所以输出将如下所示:
// {Andi : [20,100]}
如果可能的话,也许您也可以提供有关时间复杂度的详细信息?对我很有帮助
谢谢大家...
解决方法
只要您使用的 List
实现支持 add
,当然您可以添加其他元素。
但是,您使用的是 Collections#singletonList
,根据定义,它不允许任何修改(singleton
集合实用程序返回不可变的实现)。只需使用 ArrayList
、LinkedList
等
Map<String,List<Integer>> map = new TreeMap<>();
map.put("foo",new ArrayList<>());
map.get("foo").add(1);
map.get("foo").add(2);
get
和 put
的时间复杂度在 TreeMap
文档中:
此实现为 containsKey、get、put 和 remove 操作提供了保证的 log(n) 时间成本。
map.get("foo").add(1)
的时间复杂度是 log(n),因为 ArrayList#add
是常数时间。
您可以使用 Map#computeIfAbsent
来处理初始化 List
:
map.computeIfAbsent("foo",key -> new ArrayList<>()).add(1);
注意,在使用 computeIfAbsent
的任何情况下,putIfAbsent
都比 new
更可取,因为 computeIfAbsent
已存在于地图中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。