【问题标题】:Increment Key in a collection集合中的增量键
【发布时间】:2016-06-30 10:30:00
【问题描述】:

我有一个收藏说

Map<Integer,Integer> myMap=new Map<Integer,Integer>();
myMap.put(1,"a");
myMap.put(2,"b");
myMap.put(3,"c");

我的地图目前有 {1="a",2="b",3="c"}。 假设我想输入一个值说myMap.put(1,"d")

那么有没有一种方法可以让我添加现有的键并增加剩余的键,这样我的输出映射就像 {1="d",2="a",3="b",4="c"} ?

【问题讨论】:

  • 键必须是连续的吗?因为如果是这样,听起来您正在寻找一个数组/列表而不是映射(如果键不是连续的并且只有值的顺序很重要,也可以工作)
  • 不!我必须坚持收藏。只是为了问问题,我简化了问题陈述,是的键必须按顺序排列。

标签: java dictionary collections key


【解决方案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&lt;String&gt; 而不是 Map&lt;Integer,String&gt;?只需调用 list.add(0,"d"); 即可为您提供所需的功能(索引从 0 而不是 1 开始的微小差异)。

【讨论】:

  • 遍历所有元素并一一递增。你能告诉我如何实现吗?
猜你喜欢
  • 2017-09-27
  • 2019-04-08
  • 2015-11-01
  • 2012-08-11
  • 2014-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多