現在、オンラインJavaコースを行っていますが、割り当てに問題があります。この割り当ては、本質的に配列だけを使用し、他のJavaデータ構造やメソッドを使用しないハッシュマップを作成することです。これは私のコードです:配列内のリンクされたリスト
public class test {
static String[] array = new String[10];
class Cell<T> {
T first;
Cell<T> next;
Cell(T h, Cell<T> t) {
first = h;
next = t;
}
}
public static int hashFunction(String a) {
int sum = 1;
for (int i = 0; i < a.length(); i++) {
char b = a.charAt(i);
int value = (int) b;
sum *= value;
}
return sum % array.length;
}
public static void arraySetter(String a) {
int position = hashFunction(a);
if (array[position] == null) {
array[position] = a;
} else {
//Need a Linked List here for when there is already a item in the array at the same index.
}
}
public static void printArray() {
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
public static void main(String[] args) {
arraySetter("abc");
printArray();
}
}
私のコードは基本的にリストのリストを作成します。配列の各位置で、hashFunctionに同じ値を持つ2つの項目がある場合にのみ初期化されるリストを作成する必要があります。私はまだその関数を書いていないが、私の問題は今、配列の各位置にlinkedListを作成する方法を知らないということです。誰かがここで私を助けることができますか?
(あなたが明らかにArrayListを使用することはできないので)ダイナミック配列を使うのは、リンクリストよりも簡単です。 IOW、配列を使用し、使用されたサイズを格納し、使用時のサイズが配列の合計サイズを超えると、より大きな配列とコピーを作成します。 – hyde
文字列の配列は必要ありません。 Cellの配列が必要です。しかし、それはまったくHashMapではありません。マップは辞書です。固有のキーに関連付けられた値が含まれています。 –
@JBNizetどのようにハッシュマップではありませんか? – shmosel