我正在尝试通过调用其 ID 号从数组列表中选择一个项目,如果 ID 号与数组列表中的任何项目无关,我需要一个对话框错误来显示。
我知道如何编写一个对话框,但是当我输入的 ID 号与数组列表中的任何内容都不匹配时,我不知道如何让它弹出。
我正在尝试通过调用其 ID 号从数组列表中选择一个项目,如果 ID 号与数组列表中的任何项目无关,我需要一个对话框错误来显示。
我知道如何编写一个对话框,但是当我输入的 ID 号与数组列表中的任何内容都不匹配时,我不知道如何让它弹出。
for (Object myElement : myList) {
if (myElement.getId() == id) {
// handle gracefully
break;
}
}
// Make dialog box appear
正如建议的那样,您可能希望使用HashMap来提高性能
为了回答你的问题,我认为你正在寻找类似的东西
int id = getMahId();
ArrayList<?> mahList = getMahList();
if (!mahList.contains(getMahId())
throw new IllegalArgumentException("Does not contain id");
但是,我认为您正在寻找地图,可能是HashMap。这更容易让您将 id 映射到项目。
简单的方法:
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);
Boolean foundObject = false;
for (MyObject myObject : myList) {
if (id.equals(myObject.getId()) {
foundObject = true;
break;
}
}
if (!foundObject) {
//Show dialog here
}