通过唯一的int搜索数组中的对象?

时间:2015-05-18 23:25:20

标签: java arrays

假设我有一个Person对象。在此Person中有一个int和两个String字段。那个int对于那个人来说总是唯一的,但Person可以有两个相同的字符串。如果它存储在数组中,我可以搜索该特定的人吗?

3 个答案:

答案 0 :(得分:2)

迭代数组:

public static Person findById (Person[] people, int id) {
    for (Person p : people) {
        if (p.getId() == id) {
            return p;
        }
    }
    return null;
}

答案 1 :(得分:1)

public static int getIdIndex(int iD){
    //this will find index of an specific int in an int array
    int index = 0;
    for (int iD2 : peopleId){
        if (iD2 == iD) return index;
        else index++;
    }
    return -1;

}

现在情况可能会有所改变,具体取决于您创建对象的确切程度,但主要想法就在那里。

答案 2 :(得分:1)

迭代数组是最简单的直接方式,但Java 8提供了一种获取您关注的唯一元素的方法。它包含在Optional中,因此您必须自行解压缩。

public static Optional<Person> findPersonById(Person[] people, int id) {
    return Arrays.stream(people).filter(p -> p.getId() == id).findFirst();
}

这可以这样调用:

Person person = findPersonById(people, 1761283695).get();