簡體   English   中英

如何在列表中查找重復項

[英]How do i find duplicates across a 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));
          }
        }

但是我的程序由於某種原因在第一個循環中停止。

瀏覽您已經擁有的人員列表,並尋找具有相同 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);
    }
}

您可以將 arraylist 轉儲到一個集合中,然后比較這兩個。如果集合的大小小於 arraylist 的大小,則存在重復項。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM