【问题标题】:I want to insert a new Element at position 2 and Move other element One step Down ? is it possible我想在位置 2 插入一个新元素并将其他元素向下移动一步?可能吗
【发布时间】:2016-07-06 04:57:22
【问题描述】:
public class Data
 {
    public static void main(String[] args) {
      Map<String, String> data = new LinkedHashMap<String, String>();
      data.put("1", "A");
      data.put("2", "B");
      data.put("3", "C");
      data.put("4", "D");
    }
 }

我想在位置 2 插入一个新元素并将其他元素向下移动一步? 有没有可能

之前

  "1", "A"
  "2", "B"   
  "3", "C"   
  "4", "D"

之后

  "1", "A"
  "2", "New Element"
  "3", "B"  
  "4", "C"   
  "5", "D"

【问题讨论】:

  • 您建议在插入新元素时重命名您的keys?,您将如何再次找到您的数据?
  • 它不是一个数组。它是一个键值对关系映射,称为 HashMap 。因此,您需要根据需要手动更改每个键
  • 如果键只是链表的节点号,这将起作用。让 put 函数将键转换为整数,然后遍历链表以查找节点。问题是搜索操作将是 O(n) 而不是 O{log n) 所以你应该只将它用于小范围的键。

标签: java dictionary collections hashmap jmap


【解决方案1】:

您使用了错误的数据结构来满足您的需求。我猜你地图中的关键只是索引,因此不需要。你最好使用的是 ArrayList。在那里你可以add(int index,Object o)你的元素,你说你需要。

【讨论】:

    【解决方案2】:

    我不确定您要在这里实现什么。但是这段代码应该可以做到。

    String temp1 = "New Element";
    String temp2 = "";
    Set<String> keys = data.keySet();
    for(String key:keys){
        if(key.compareTo("2")>=0){
            temp2 = data.get(key);
            data.put(key,temp1);
            temp1 = temp2;
        }
    }
    data.put(keys.size()+1,temp1);
    

    假设您将输入的键将按升序排列

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-26
      相关资源
      最近更新 更多