获取非原始类型List中项的索引

时间:2014-08-07 08:30:16

标签: java list

这是我的班级信息

public class Info {
    public String imei;
    public Integer delta;
}

和我的

List<Info> Records;

有没有一种简单的方法来获取信息的索引,例如imei是356307044597945,或者我必须浏览列表,比较所有元素?

3 个答案:

答案 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。