我有一个集合说
Map<Integer,Integer> myMap=new Map<Integer,Integer>();
myMap.put(1,"a");
myMap.put(2,"b");
myMap.put(3,"c");
我的地图目前有{1 =&#34; a&#34;,2 =&#34; b&#34;,3 =&#34; c&#34;}。
假设我想要一个值myMap.put(1,"d")
那么有没有一种方法可以添加现有的密钥并增加剩余的密钥,这样我的输出图就像 {1 =&#34; d&#34;,2 =&#34; a&#34;,3 =&#34; b&#34;,4 =&#34; c&#34;}?
答案 0 :(得分:1)
您必须遍历Map
的所有元素才能修改所有现有密钥的值。
例如,您可以使用Java 8 Streams生成一个新的Map,其中键增加,然后添加新的条目:
map = map.entrySet().stream().collect(Collectors.toMap(e->e.getKey()+1,e->e.getValue()));
map.put(1,"d");
但是,如果您的密钥是连续的整数(如您的示例所示),为什么不使用ArrayList<String>
而不是Map<Integer,String>
?这将通过简单地调用list.add(0,"d");
为您提供所需的功能(索引的小差异从0开始而不是1)。