如何在列表中找到重复项

时间:2016-09-11 21:13:19

标签: java arrays list

我正在尝试接收用户ID并根据列表检查它以查看它是否已存在。如果是,则打印" ID已经存在"如果没有,则接受用户名并将其存储在列表中。

private LinkedList<Person> people = new LinkedList<Person>();

    private void addPerson(){
           int personId = readPersonId();
           Person person = person(personId);
           if (person.hasId){
           System.out.println("ID already exists"); 
           }
          else{
           String s = readName();
           people.add(new Person(personId, s, 2));
          }
        }

然而,由于某种原因,我的程序在第一个循环中停止。

2 个答案:

答案 0 :(得分:0)

浏览您已经拥有的人员列表,并查找具有相同ID的任何人。如果没有匹配的那个,那就去吧,把新人添加到列表中。

private LinkedList<Person> people = new LinkedList<Person>();

private void addPerson(){
    int personId = readPersonId();
    boolean found = false;

    for (Person curr : people) {
        if (curr.getId() == personId){
            System.out.println("ID already exists"); 
            found = true;
            break;
        }
    }

    if (!found) {
        Person person = person(personId);
        String s = readName();
        people.add(person);
    }
}

答案 1 :(得分:0)

您可以将您的arraylist转储到一个集合中,然后比较它们2.如果集合的大小低于arraylist大小,那么就有重复。

ArrayList<Integer> list = ...;
Set<Integer> set = new HashSet<Integer>(list);

if(set.size() < list.size()){
    /* There are duplicates in your arrayList */
}