微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将另一个元素作为列表插入到 TreeMap 值中

如何解决如何将另一个元素作为列表插入到 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 集合实用程序返回不可变的实现)。只需使用 ArrayListLinkedList

Map<String,List<Integer>> map = new TreeMap<>();
map.put("foo",new ArrayList<>());
map.get("foo").add(1);
map.get("foo").add(2);

getput 的时间复杂度在 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 举报,一经查实,本站将立刻删除。