Java教育を継続するために、配列のArrayListに文字列値をすばやく効率的に検索できるネイティブJavaメソッドがあるかどうかを判断しようとしています。ここでArray値のArrayList逆引き参照
は私がやろうとしているかを示して私のコードです:
public void exampleArrayListofArray() {
ArrayList<String []> al = new ArrayList<>();
al.add(new String[] {"AB","YZ"});
al.add(new String[] {"CD","WX"});
al.add(new String[] {"EF","UV"});
al.add(new String[] {"GH","ST"});
al.add(new String[] {"IJ","QR"});
al.add(new String[] {"KL","OP"});
displayArrayListofArray(al);
}
public void displayArrayListofArray(List<String []> al) {
for (String [] row : al)
for (int column = 0; column <= 1 ; column ++){
System.out.println("Value at Index Row " + al.indexOf(row) +
" Column " + column + " is " + (row)[column]);
}
String lookUpString = "YZ";
lookUpMethod(al, lookUpString);
lookUpString = "ST";
lookUpMethod(al, lookUpString);
lookUpString = "IJ";
lookUpMethod(al, lookUpString);
lookUpString = "AA";
lookUpMethod(al, lookUpString);
}
public void lookUpMethod(List<String []> al, String lookUpString) {
boolean isStringFound = false;
for (String[] row : al) {
for (int column = 0; column <= 1; column++) {
if (al.get(al.indexOf(row))[column] == lookUpString) {
System.out.println("Index of '" + lookUpString + "': " + al.indexOf(row) + column);
isStringFound = true;
}
}
}
if (!isStringFound) {
System.out.println("Search string '" + lookUpString + "' does not exist.");
}
}
これは、指定された文字列のための私のArrayListを検索する最も効率的な方法ですか? (ArrayListを使用しないで)コードをより効率的にするために何かすべきことはありますか?
おそらく私がここでやろうとしていることは、HashMapなどのArrayListより効率的な方法があるかもしれないが、現在は非常に限られたJavaの知識があることを知っています。 HashMapを使用して最初から開始する必要があります。
- ユーザが入力した値
- ためのArrayListのは内の隣接値でいくつかのCALCSを行い検索ArrayListの
- をロードするために、資産のテキストファイルを読む:私のコードの最後の目標は、次のことを行うことです検索行
- は、ユーザーが検索行
- の近隣値が検索文字列が
- が戻っアル中、資産のテキストファイルに変更を保存見つからない場合、ユーザーは新しい行を追加することを許可更新を許可しますphabeticalため
エアフィックス
任意の 'Collection'の要素を参照するネイティブな方法がありますが、この場合、指定されたコレクション内のすべての配列を調べているので、ネイティブな方法はありません。より合理的で簡潔で宣言的なアルゴリズムのためには、Java 8 lambdaを使用することをお勧めします。 – Mena
以前にコレクションをソートしておけば、O(n)ではなくO(log n)で実行されるバイナリ検索を適用できます。また、他のすべての残りのリストと配列を実行する代わりに1つの一致が見つかった場合は、検索メソッドから戻ることができます。 – Palle
また、私はバグを発見したかもしれません:文字列の一致をチェックする場合は、 'firstString.equals(secondString)'メソッドを使用する必要があります。 '==' -Operatorは、両方のString参照がメモリ内の全く同じ場所を指している場合にのみtrueを返します。 – Palle