如何在java中使用HashMap创建链接列表?我在网上搜索,有使用LinkedList数据结构的实现。 Interviewer要求我在不使用LinkedList数据结构的情况下实现它,我尝试着使用HashTable,但最终他说我应该使用HashMap来完成它。如何在java中使用HashMap实现链接列表
非常感谢您的回答。
我已经阅读您的意见后,做到了这一点:
public class hashMap {
static Map<Integer, Integer> mMap = new HashMap<Integer, Integer>();
public static void main(String[] args) {
int a;
mMap.put(1, 2);
mMap.put(2, 3);
mMap.put(3, 4);
mMap.put(4, 7);
mMap.put(7, 8);
Scanner in = new Scanner(System.in);
System.out.println("Enter: ");
a = in.nextInt();
itera();
if(mMap.containsKey(a)) {
add.insert(a);
}
else if (!mMap.containsKey(a)) {
add.remove(a);
}
itera();
}
public static void itera() {
for (Iterator<Integer> iter = (Iterator<Integer>) mMap.keySet().iterator(); iter.hasNext();) {
int key = iter.next();
int sa = mMap.get(key);
System.out.println(key + " : " + sa);
}
}
static class add {
public static void insert(int a) {
int s = a-1;
int newKey = s;
int sa = mMap.get(a);
mMap.put(newKey, sa);
mMap.remove(a);
}
public static void remove(int a) {
int newa = a;
while(!mMap.containsKey(a)) {
a--;
System.out.println("while a: " + a);
}
mMap.put(newa, mMap.get(a));
mMap.put(a, newa);
}
}
}
它只是插入和删除节点到链表。但是如果某些键丢失,就会出现问题,例如5 & 6在键中不存在。所以如果我尝试插入6,它不起作用。任何人都可以解释我做错了什么?
没有什么可以解释的:'HashMap'是新的'HashTable' :) – dasblinkenlight
我不知道你为什么使用Hashtable,或者甚至如何。他应该进入这方面而不是挑选集合班。 – EJP
@ user2142511。将它作为类并添加插入和删除方法。发布该课程。并将其存储在另一个地方的对象来了.u可以在关键字,对象对中使用它,或者使用具有键值的另一个hashmap。插入将变得简单和快速,获取也将变得简单和快速,导致链接列表将使用索引。在中间插入也是高成本的。你必须插入然后更新其他键的索引。参见https://en.wikipedia.org/wiki/Linked_list加快搜索该方法的利弊搜索部分 – qwr