查找多个对象的索引

时间:2014-04-30 18:34:46

标签: java collections

我创建此代码仅仅是为了我自己的理解。我有一个person类和一个List来存储我所有的Person对象。我两次添加相同的对象来说明我的问题。如何找到这些对象的索引?

如何找到两个Andy Bernards的索引?

public class Person {

    private String firstName;
    private String lastName;

    public Person(String firstName,String lastName)
    {
        this.firstName = firstName;
        this.lastName = lastName;

    }

    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    @Override public String toString()
    {
        return String.format(this.firstName + " " + this.lastName);  
    }
}



List<Person> deletePeople = new ArrayList<Person>();
Person createPerson = new Person("Andy","Bernard"); 
Person createTwo = new Person("Micheal","Scott");
deletePeople.add(createPerson);           
deletePeople.add(createTwo);         
deletePeople.add(createPerson);
/* for (Person display : deletePeople) {
    if(display.getFirstName().equals("Andy")) {
        System.out.println(deletePeople.indexOf(display));
    }
} */ 
}

2 个答案:

答案 0 :(得分:1)

首先,将.equals()和.hashCode()方法添加到Person类中,这样就可以将Person对象标识为相同。

其次,使用类List中的indexOf()和lastIndexOf()方法来查找第一个和最后一个Andy Bernard对象。

答案 1 :(得分:0)

如果您真正想要的是列表中的索引列表,其中对象符合您的条件,并且可以有多个索引,那么您需要自己迭代列表,并将索引保​​存到某种列表中。

如果您想要的只是删除匹配的项目,那么您可以使用java.util.Iterator(请参阅http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html)迭代该集合,并调用Iterator的{{1}遇到它时每个匹配对象的方法。

相关问题