ID 番号を呼び出して配列リストから項目を選択しようとしていますが、ID 番号が配列リスト内のどの項目にも関連付けられていない場合、ダイアログ エラーが表示される必要があります。
ダイアログ ボックスのコーディング方法は知っていますが、入力した ID 番号が配列リスト内のどれとも一致しない場合にダイアログ ボックスをポップアップさせる方法がわかりません。
ID 番号を呼び出して配列リストから項目を選択しようとしていますが、ID 番号が配列リスト内のどの項目にも関連付けられていない場合、ダイアログ エラーが表示される必要があります。
ダイアログ ボックスのコーディング方法は知っていますが、入力した ID 番号が配列リスト内のどれとも一致しない場合にダイアログ ボックスをポップアップさせる方法がわかりません。
Boolean foundObject = false;
for (MyObject myObject : myList) {
if (id.equals(myObject.getId()) {
foundObject = true;
break;
}
}
if (!foundObject) {
//Show dialog here
}
簡単な方法:
List<MyClass> list = new ArrayList<MyClass>();
// add objects to list
String id; // get this from wherever
boolean found = false;
for (MyClass o : list) {
found |= o.getId().equals(id);
}
より良い方法は、equals() メソッドをオーバーライドして ID を比較することです。
public class MyClass {
String id;
public boolean equals(Object o) {
return o instanceof MyClass &&
((MyClass)o).getId().equals(id);
}
// hash code should agree with equals
public int hashCode() {
return id.hashCode();
}
// rest of class omitted
}
次に、確認するには、次のようにします。
boolean found = list.contains(id);
あなたの質問に答えるために、あなたは次のようなものを探していると思います
int id = getMahId();
ArrayList<?> mahList = getMahList();
if (!mahList.contains(getMahId())
throw new IllegalArgumentException("Does not contain id");
ただし、マップ、おそらくHashMapを探していると思います。これにより、ID をアイテムに簡単にマップできます。
for (Object myElement : myList) {
if (myElement.getId() == id) {
// handle gracefully
break;
}
}
// Make dialog box appear
提案されているように、パフォーマンスのためにHashMapを使用することをお勧めします