この配列を取得したとしましょう:
String [] [] array = new String [5] [5];
array [2][2]=絶望的;
かどうかを見つけることは可能でしょうか
文字列s="絶望的"; --forループを使用せず、値「desperate」が割り当てられた配列の行と列の組み合わせを手動で入力しなくても、任意の配列要素に等しくなりますか?
while
forループの代わりにループ
int i = 0;
int j = 0;
while (i < n)
{
while (j < m)
{
if (array[i][j].equals("..."))
{
///
}
j++;
}
i++;
}
拡張 for ループを使用: -
String [][] array = new String[2][2];
array[1][1] = "desperate";
array[0][1] = "despee";
array[1][0] = "despete";
array[0][0] = "dete";
for (String[] innerArr: array) {
for (String value: innerArr) {
if (value.equals("desperate")) {
System.out.println(value + " == desperate");
}
}
}
出力: -絶望的 == 絶望的
私が提案するより良いArrayList<String>
方法は、アイテムを保存するために使用することです..次に、contains()
メソッドを呼び出して、リストにその要素が含まれているかどうかを確認できます..
List<String> listString = new ArrayList<String>();
listString.add("desperate");
listString.add("despe");
if (listString.contains("desperate")) {
System.out.println("True");
}
出力: -真
(何らかの理由で) 配列を別のコレクション型に変更できないと仮定します。
String[][]array = new String[5][5];
array[2][2] = "desperate";
public boolean contains(String str){
return new HashSet<String>((List<String>)Arrays.asList(array)).contains(str);
}
List
HashSet のcontains()
メソッドはO(1)であり、そのメソッドはList
O(n)であるため、a に変換するよりも優れています。
ループの使用を回避する唯一の方法 (なぜそうしたいのかは明確ではありません) は、すべての文字列とインデックスを使用して事前に構築した Map を使用することです。