在将<key,value>对插入数据结构</key,value>之后,我应该使用哪种数据结构来更改哪些键

时间:2014-05-08 23:22:41

标签: java data-structures hashmap

我有一个双重链接列表,其中我有索引和一些值。 LinkedListNode结构如下:

Class LinkedListNode
{
  int index;
  String Value;
}

如果我更改了链表中一个节点的索引,则需要更改链表中后续节点的索引。要更改LinkedListNode的索引,我必须根据索引搜索链表中的节点。现在,因为索引可以在链表节点中发生变化,所以我对如何搜索索引部分感到困惑,因为我不能简单地使用ArrayList来执行此操作。所以为此,我使用了HashMap。由于此HashMap具有索引作为引用,如果在linkedList节点中任何索引发生更改,它将在HashMap中受到影响。但它没有工作,因为我希望它工作,即在O(1)时间内找到具有给定索引的节点。有什么建议吗?

作为键插入到hashmap中的对象是:

public class MyObject {
    int index;
    String str;
}

驱动程序类是:

public class HashMapTest {
public static void main(String[] args) {
    HashMap<MyObject, String> map = new HashMap<MyObject, String>();

    MyObject mo = new MyObject();
    MyObject mo1 = new MyObject();

    mo.index = 1;

    map.put(mo, "abc");

    mo1.index =100;
    mo.index = 2;

    map.put(mo1, "pqr");

    mo1.index =200;

    System.out.println("value: " + map.get(mo));

    Iterator it = map.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pairs = (Map.Entry)it.next();
        System.out.println(((MyObject)pairs.getKey()).index + " = " + pairs.getValue());
        it.remove(); // avoids a ConcurrentModificationException
    }
}
}

此处mo.index1更改为2,因此当我输出时,它会mo.index = 2。现在我应该如何从mo O(1)获取HashMap个{{1}}对象?或者是否有其他数据结构可用于实现相同的目标?

0 个答案:

没有答案