2016-05-23 5 views
0
int index = hash(value, size); 

if (array.get(index).contains(value)) { 
    return false; 
} 

Arraylist.get(unknown source)はエラーです。私がしているのは、指定された配列インデックスのリンクされたリストに値が存在するかどうかをチェックし、存在する場合はfalseを返すことです。ArrayList内のLinkedListの値を取得中

また、indexoutofboundsの例外として、「インデックス7:配列のサイズは0」と書かれていますか?私はサイズ50の要素を持つコンストラクタを呼び出しました:

array = new ArrayList<LinkedList<String>>(50); 
+3

インデックス '7'に存在する要素が実際に_add_十分でしたか? '50'パラメータは、' ArrayList'の初期サイズが50になることを意味します。アクセスできる空きスロットが50個あるわけではありません。 –

+0

ああ、私は参照してください、どのように私は50使用可能なスポットを作るのですか?配列内に50個のリンクされたリストを個別に追加する必要がある場合は、それぞれのinsertに対して異なるリンクリスト名変数が必要で、forループで変数名を変更するのが難しいので動作しません。 –

+0

'int index = hash(value、size ) 'あなたはそれがあなたが必要とする' HashMap'ではないと確信していますか? –

答えて

0

あなたが欠けているのは、ArrayLists内に新しいリンクリストを追加することだと思います。

サイズ50のarrayListを作成したが、アクセスしようとしているLinkedListのインスタンスを作成していない。

for(int i=0;i<50;i++){ 
     array.add(i, new LinkedList<String>()); 
    } 
0

は、あなたがこの中で達成しようとしている二つのものがあります。

だから、あなたは、コンストラクタできたものに加えて、あなたはこのような何かを持っている必要があります。

  1. 埋め込みLinkedListでarraylistを作成します。
  2. arraylistのサイズを50に初期化する。これは、Arraylistの各インデックス内でLinkedListを初期化したことを意味しません。 array.get(index)にアクセスしようとすると、java.lang.IndexOutOfBoundsExceptionがスローされます。したがって、これを使用する前に、上記の@ attaboy182によって提供されるコードを使用してArraylist内の50 LinkedListを初期化してください。

    for(int i = 0; i < 50; i ++){ array.add(i、new LinkedList()); }

あなたのコードを使用することができるのLinkedListを初期化した後、それはすべてのエラーをスローしません。

int index = 0; 
List array = new ArrayList<LinkedList<String>>(50); 
for (int i = 0; i < 50; i++) { 
    array.add(i, new LinkedList<String>()); 
} 
((LinkedList) array.get(index)).add("anish"); 
((LinkedList) array.get(index)).add("barnwal"); 
System.out.println(((LinkedList)array.get(index)).contains("anish")); 
System.out.println(((LinkedList)array.get(index)).contains("Jakkie")); 
関連する問題