2016-04-04 9 views
0

arraylist(英数字値とそのハッシュコード)のエントリ項目に対応する値を検索しようとしています。arrayListで検索する

オブジェクト(キー)の複製を許可するために、ハッシュマップの使用が削除されました。

ArrayList<Object[]> pNArrayList = new ArrayList<Object[]>();

for(int i=0; i< pNHashArrayList.size();i++) { 
      if(pNArrayList.get(i)[1].equals(inputID)){ 
       System.out.println(pNArrayList.get(i)[0]); 
      } 
      else { 
       System.out.println(pNArrayList.get(i)[0] + " and "+ pNArrayList.get(i)[1] +" No Match Found"); 
      } 
     } 

その後だけ相互検証するために含まれていたelseSysOutステートメント長いタイプを入力するための

[101E2571G103, -1162488899] 
[101E2571G103, -1162488899] 
[116E3139P001, -1561106156] 
[314B7159G003, -1344220682] 
[117E3640G025, -1595019143] 
[117E3640G025, -1595019143] 

inputIDを含んでいます。

出力:

101E2571G103 and -1162488899 No Match Found 
101E2571G103 and -1162488899 No Match Found 
116E3139P001 and -1561106156 No Match Found 
314B7159G003 and -1344220682 No Match Found 
117E3640G025 and -1595019143 No Match Found 
117E3640G025 and -1595019143 No Match Found 

私が思うに、問題がpNArrayList.get(i)[1].equals(inputID)にあるかもしれません?。これに関するいくつかの提案が必要です。

はまた、私の実際のデータセットがループすることにより、ルックアップは、実行時の計算に問題があるだろう、万件のentiresの周りにあるのだろうか?

+0

はまたさらに、デバッグにSYSOUTにinputID''の値を印刷します。 get(i)[1] '。 – Mahendra

+0

@Mahendra 'inputID'は、ArrayListに実際に存在する' -1595019143'でした。これが私が問題を理解できないところです。 – Betafish

答えて

2

データ構造の構築方法がわかりません。しかし、より良いデザインは、長さがinputIDMap<Long, List<Object>>をキーとし、その値はすべて同じIDに属するObjectのリストになることができます。この方法では、同じキーについて複数の値をサポートしており、参照はO(1)

と等価ではLongではなく、Objectと等価です。提案されたデータ構造もこの問題を解決するはずです。

+0

既存のデータ構造の問題を処理する方法はありますか? – Betafish

0

良いアプローチは@sharonbnによって提案されていますが、既存のコードを実行するために、これを試すことができます。pNArrayList `と等しくない理由

 if(((Long)pNArrayList.get(i)[1]) == inputID){ 
      System.out.println(pNArrayList.get(i)[0]); 
     } 
     else { 
      System.out.println(pNArrayList.get(i)[0] + " and "+ pNArrayList.get(i)[1] +" No Match Found"); 
     } 
    } 
+0

私にとっては、空文字列を 'if(pNArrayList.get(i)[1] .equals(" + inputID)) ' – Betafish

+0

に追加することでした。これは、オブジェクトID []にStringとして_inputID_を追加した場合にのみ可能です。しかし、 "_入力の場合は、long_型のinputID"と書いたので、LongオブジェクトとStringオブジェクトが等しいかどうかをチェックしています。 – Mahendra

関連する問題