0

ID 番号を呼び出して配列リストから項目を選択しようとしていますが、ID 番号が配列リスト内のどの項目にも関連付けられていない場合、ダイアログ エラーが表示される必要があります。

ダイアログ ボックスのコーディング方法は知っていますが、入力した ID 番号が配列リスト内のどれとも一致しない場合にダイアログ ボックスをポップアップさせる方法がわかりません。

4

4 に答える 4

0
Boolean foundObject = false;

for (MyObject myObject : myList) {
    if (id.equals(myObject.getId()) {
        foundObject = true;
        break;
    }
}

if (!foundObject) {
    //Show dialog here
}
于 2013-04-08T15:39:11.077 に答える
0

簡単な方法:

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);
于 2013-04-08T15:37:05.253 に答える
0

あなたの質問に答えるために、あなたは次のようなものを探していると思います

int id = getMahId();
ArrayList<?> mahList = getMahList();
if (!mahList.contains(getMahId())
    throw new IllegalArgumentException("Does not contain id");

ただし、マップ、おそらくHashMapを探していると思います。これにより、ID をアイテムに簡単にマップできます。

于 2013-04-08T15:32:36.600 に答える
0
for (Object myElement : myList) {
    if (myElement.getId() == id) {
        // handle gracefully
        break;
    }
}

// Make dialog box appear

提案されているように、パフォーマンスのためにHashMapを使用することをお勧めします

于 2013-04-08T15:31:52.407 に答える