如何在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