0

我正在尝试通过调用其 ID 号从数组列表中选择一个项目,如果 ID 号与数组列表中的任何项目无关,我需要一个对话框错误来显示。

我知道如何编写一个对话框,但是当我输入的 ID 号与数组列表中的任何内容都不匹配时,我不知道如何让它弹出。

4

4 回答 4

0
for (Object myElement : myList) {
    if (myElement.getId() == id) {
        // handle gracefully
        break;
    }
}

// Make dialog box appear

正如建议的那样,您可能希望使用HashMap来提高性能

于 2013-04-08T15:31:52.407 回答
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

简单的方法:

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
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 回答