这是我的班级信息
public class Info {
public String imei;
public Integer delta;
}
和我的
List<Info> Records;
有没有一种简单的方法来获取信息的索引,例如imei是356307044597945,或者我必须浏览列表,比较所有元素?
答案 0 :(得分:5)
List
接口中没有方法可以根据对象属性查找对象。所以你需要遍历你的List。
最好使用Map
为您的需求提供键值对映射。 Map
绝对是一个更好的选择,因为与使用List上的迭代相比,使用Map时,您将能够获得具有O(1)复杂度而非O(n)的所需对象。
您可以使用imei
作为地图的关键字,并使用相应的Info
对象作为值。
答案 1 :(得分:3)
您可以实现equals / hashCode方法:
public class Info {
public String imei;
public Integer delta;
public Info(String imei) {
this.imei = imei;
}
@Override
public boolean equals(Object obj) {
return obj instanceof Info && obj.imei.equals(imei);
}
@Override
public int hashCode() {
return Arrays.hashCode(new Object[] { imei });
}
}
然后:
int index = records.indexOf(new Info("356307044597945"));
不确定这是不是一个好习惯,等待上下投票;)
答案 2 :(得分:1)
如果您需要索引,请维护Map
对象的Info
,并将字符串作为键,这是您的imei
(假设是唯一的。)。
否则无法直接从列表中获取它而不查看(循环)到List。