如何在 java 中使用 HashMap 创建链表?我在网上搜索,有使用LinkedList数据结构的实现。面试官让我在不使用 LinkedList 数据结构的情况下实现它,我尝试使用 HashTable 但最后他说我应该使用 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,它就不起作用。谁能解释我做错了什么?