Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在由LinkedList组成的java hashmap中,给定一个键,如何更新一个值?_Java_List_Linked List_Hashmap - Fatal编程技术网

在由LinkedList组成的java hashmap中,给定一个键,如何更新一个值?

在由LinkedList组成的java hashmap中,给定一个键,如何更新一个值?,java,list,linked-list,hashmap,Java,List,Linked List,Hashmap,这是我的HashMap: HashMap<String, LinkedList<LinkedList<String>>> partitionMap = new HashMap<String, LinkedList<LinkedList<String>>>(); 但是在这个例子中,我们有一个整数,在我的例子中,我有一个链接列表 有没有办法做到这一点?put仍然可以使用。您可以将一对新的字符串、LinkedList放入地图中,

这是我的
HashMap

HashMap<String, LinkedList<LinkedList<String>>> partitionMap = new HashMap<String, LinkedList<LinkedList<String>>>();
但是在这个例子中,我们有一个
整数
,在我的例子中,我有一个
链接列表


有没有办法做到这一点?

put
仍然可以使用。您可以将一对新的
字符串、LinkedList
放入地图中,方法是:

LinkedList<LinkedList<String>> aList = new LinkedList<LinkedList<String>>();
hashmap.put("aString", aList);
您不需要将修改后的列表放回地图中。当您获得对地图中列表的引用时,您正在修改地图中当前的列表


顺便问一下,您确定要一个
链接列表
?访问外部LinkedList中的任意LinkedList将花费线性时间,这意味着编辑其中一个嵌套LinkedList的内容将花费(最佳情况下)线性时间,并且可能与二次型一样糟糕


我建议改为使用
ArrayList
(或实例化为
ArrayList
List
)。通过这种方式,您可以在固定时间内访问任意嵌套列表,并且嵌套列表中使用的特定列表实现保持打开状态。

put
仍然可以工作。您可以将一对新的
字符串、LinkedList
放入地图中,方法是:

LinkedList<LinkedList<String>> aList = new LinkedList<LinkedList<String>>();
hashmap.put("aString", aList);
您不需要将修改后的列表放回地图中。当您获得对地图中列表的引用时,您正在修改地图中当前的列表


顺便问一下,您确定要一个
链接列表
?访问外部LinkedList中的任意LinkedList将花费线性时间,这意味着编辑其中一个嵌套LinkedList的内容将花费(最佳情况下)线性时间,并且可能与二次型一样糟糕

我建议改为使用
ArrayList
(或实例化为
ArrayList
List
)。这样,您就可以在固定时间内访问任意嵌套列表,并且嵌套列表中使用的特定列表实现保持打开状态。

当然可以:

LinkedList<LinkedList<String>>> list = hashmap.get(key);
LinkedList<LinkedList<String>>> updatedList = updateListValue(list);
hashmap.put(key, updatedList);
LinkedList>list=hashmap.get(key);
LinkedList>updatedList=updateListValue(列表);
put(key,updatedList);
现在,
updateListValue(LinkedList>list)
的代码当然取决于“更新值”的含义。

是的,当然:

LinkedList<LinkedList<String>>> list = hashmap.get(key);
LinkedList<LinkedList<String>>> updatedList = updateListValue(list);
hashmap.put(key, updatedList);
LinkedList>list=hashmap.get(key);
LinkedList>updatedList=updateListValue(列表);
put(key,updatedList);

现在,
updateListValue(LinkedList>list)
的代码当然取决于“更新值”的含义。

如果您使用的是Java8+,您可以使用方法
compute
ComputeiPresent
ComputeFabSent

    HashMap<String, LinkedList<LinkedList<String>>> partitionMap = new HashMap<String, LinkedList<LinkedList<String>>>();
    partitionMap.computeIfAbsent("key-1", key -> new LinkedList<>()); //add
    System.out.println(partitionMap);
    partitionMap.computeIfPresent("key-1", (key, value) -> {value.add(new LinkedList<>()); return value;}); //update
    System.out.println(partitionMap);

如果您使用的是Java8+,则可以使用方法
compute
computeIfPresent
computeifassent

    HashMap<String, LinkedList<LinkedList<String>>> partitionMap = new HashMap<String, LinkedList<LinkedList<String>>>();
    partitionMap.computeIfAbsent("key-1", key -> new LinkedList<>()); //add
    System.out.println(partitionMap);
    partitionMap.computeIfPresent("key-1", (key, value) -> {value.add(new LinkedList<>()); return value;}); //update
    System.out.println(partitionMap);

“有没有办法做到这一点?”通过调用hashmap.get(key),然后通过调用其上的方法对其进行修改。。。e、 G.hashmap.get(key).add(…)是否要更新链表的内容或链表本身?如果我更新hashmap.get(key).add(…),它将返回错误,因为add方法返回布尔值。这就是问题所在。我想更新LinkedList本身。如果您使用的是java 8,我建议您查看
putIfAbsent()
computeifassent()
computeIfPresent()
merge()
@user840718。是这样吗?只需忽略返回值。只需调用hashmap.get(key).add(..)就足以修改列表。它们不是一成不变的。如果你想用一个完整的新对象替换它,只需调用hashmap.put(key,new LinkedList())“有没有办法做同样的事情?”通过调用hashmap.get(key),然后通过调用它的方法来修改它。。。e、 G.hashmap.get(key).add(…)是否要更新链表的内容或链表本身?如果我更新hashmap.get(key).add(…),它将返回错误,因为add方法返回布尔值。这就是问题所在。我想更新LinkedList本身。如果您使用的是java 8,我建议您查看
putIfAbsent()
computeifassent()
computeIfPresent()
merge()
@user840718。是这样吗?只需忽略返回值。只需调用hashmap.get(key).add(..)就足以修改列表。它们不是一成不变的。如果您想用一个完整的新对象替换它,只需调用hashmap.put(key,newlinkedlist())。
{key-1=[]}
{key-1=[[]]}