Sco*_*ion 11 java search arraylist indexof
首先,如果我错了,请纠正我.我想在ArrayList<CustomType>不使用For循环的情况下找到Item的索引(即字符串值).
POJO:
id;
name;
Run Code Online (Sandbox Code Playgroud)
码:
ArrayList<POJO> list = new ArrayList<POJO>;
//Lots of data added to these list...
Run Code Online (Sandbox Code Playgroud)
现在我想从arraylist中找到特定名称的id而不使用下面的for循环.
String id = null;
// TODO Auto-generated method stub
for (int i = 0; i < list.size(); i++) {
if("ABCD".equalsIgnoreCase(list.get(i).getName())) {
id = list.get(i).getId();
break;
}
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我不想实现For循环,因为在某些情况下,我在List中有500多个数据,并且使用For循环查找索引不是一个好方法.
Dan*_* D. 12
你可以使用list.indexOf(),但为了使它工作,你需要覆盖equals和hasCode你的POJO.
默认情况下,如果两个对象具有相同的引用,则它们将被视为相等.您可以覆盖equals以适用于您的案例:
public boolean equals(Object o) {
if (!(o instanceof POJO)) {
return false;
}
POJO other = (POJO) o;
return name.equalsIgnoreCase(other.getName());
}
Run Code Online (Sandbox Code Playgroud)
覆盖等于建议你覆盖hashCode.例如:
public int hashCode() {
return name.hashCode();
}
Run Code Online (Sandbox Code Playgroud)
感谢大家的友好和快速的回复。但要特别感谢Joachim Sauer。你说得对,500 个元素并不是很多,很可能这个循环对代码的性能没有真正的影响(即使它效率低下)。即使我尝试了 5000 个元素,仍然没有对性能产生负面影响。
再次感谢大家,并感谢Joachim Sauer 的评论。
| 归档时间: |
|
| 查看次数: |
20940 次 |
| 最近记录: |