我有一个双重链接列表,其中我有索引和一些值。 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.index
从1
更改为2
,因此当我输出时,它会mo.index = 2
。现在我应该如何从mo
O(1)
获取HashMap
个{{1}}对象?或者是否有其他数据结构可用于实现相同的目标?