所以我仍在学习 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);
请注意,在使用where 的任何情况下computeIfAbsent
都更可取,因为当键已存在于映射中时,可避免不必要的分配。putIfAbsent
new
computeIfAbsent
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句