Java是一種非常流行的編程語言,其各種數(shù)據(jù)結(jié)構(gòu)也是使用廣泛的。其中,List和Map是常用的兩種數(shù)據(jù)結(jié)構(gòu)。在Java中,我們可以使用數(shù)組和LinkedList等來實現(xiàn)List,使用HashMap和TreeMap等來實現(xiàn)Map。接下來,我們將使用Java語言來模擬這兩種數(shù)據(jù)結(jié)構(gòu)。
首先,我們來模擬List。在這里,我們使用數(shù)組來實現(xiàn)。我們定義一個大小為10的數(shù)組和一個指向當(dāng)前元素位置的指針:
int[] array = new int[10]; int pointer = 0;
那么,如何添加元素呢?我們可以使用一個add方法來實現(xiàn):
public void add(int x) { array[pointer++] = x; }
這個方法可以將傳入的元素添加到數(shù)組中,并將指針加一。接著,我們可以使用一個get方法來獲取指定位置的元素:
public int get(int index) { if (index >= 0 && index< pointer) { return array[index]; } return -1; }
這個方法首先判斷傳入的索引是否合法,如果合法,則返回該索引位置的元素,否則返回-1。
接下來,我們來模擬Map。在這里,我們使用數(shù)組來實現(xiàn)。我們定義一個大小為10的數(shù)組,每個元素是一個鏈表,鏈表中存儲了鍵值對:
LinkedList>[] array = new LinkedList[10]; for (int i = 0; i< 10; i++) { array[i] = new LinkedList<>(); }
然后,我們可以使用一個put方法來添加鍵值對:
public void put(int key, int value) { int index = key % 10; for (Pairpair : array[index]) { if (pair.getKey() == key) { pair.setValue(value); return; } } array[index].add(new Pair<>(key, value)); }
這個方法首先計算出鍵的哈希值,然后找到對應(yīng)的鏈表,遍歷鏈表中每個鍵值對,如果找到了相同的鍵,則更新對應(yīng)的值,否則將該鍵值對添加到鏈表的末尾。
最后,我們可以使用一個get方法來獲取對應(yīng)的值:
public int get(int key) { int index = key % 10; for (Pairpair : array[index]) { if (pair.getKey() == key) { return pair.getValue(); } } return -1; }
這個方法首先計算出鍵的哈希值,然后找到對應(yīng)的鏈表,遍歷鏈表中每個鍵值對,如果找到了相同的鍵,則返回對應(yīng)的值,否則返回-1。