检查重复的电话号码,工作正常,直到我们有4个以上

时间:2015-03-05 10:12:31

标签: java arraylist duplicates

我和我的朋友正在处理一个应该处理客户的程序。问题是我们需要检查一个以上的客户是否使用了电话号码。代码工作正常,直到我们达到4个具有相同编号的客户...然后用该编号打印出最后一个客户两次!我们无法弄清楚它有什么问题,如果你能快速关注我们的代码,那将是可爱的:)

//CASE 10: LISTA TELEFONNUMMER SOM FLER ÄN EN KUND HAR        
public static void listaTelNr() {   
    String KtelefonNr;
    String Knamn;
        for(int y=0;y<TelefonNrLista.size();y++){
            for(int x=y+1;x<TelefonNrLista.size();x++){
                if (TelefonNrLista.get(y).getTelNr().equals(TelefonNrLista.get(x).getTelNr())){
                    KtelefonNr=TelefonNrLista.get(y).getTelNr();
                    Knamn= TelefonNrLista.get(y).getKundNamn();
                    SammaTelNr nySammaTelNr=new SammaTelNr(KtelefonNr,Knamn);
                    SammaTelNrLista.add(nySammaTelNr);
                    KtelefonNr=TelefonNrLista.get(x).getTelNr();
                    Knamn= TelefonNrLista.get(x).getKundNamn();
                    SammaTelNr nySammaTelNr2=new SammaTelNr(KtelefonNr,Knamn);
                    SammaTelNrLista.add(nySammaTelNr2);

            }
    }
        }



        for(int y=0;y<SammaTelNrLista.size();y++){
            for(int x=y+1;x<SammaTelNrLista.size();x++){
                if (SammaTelNrLista.get(y).getKundNamn().equals(SammaTelNrLista.get(x).getKundNamn())){
                    SammaTelNrLista.remove(x);

                }
            }
                }
        for(int i=0;i<SammaTelNrLista.size();i++){
        System.out.println(SammaTelNrLista.get(i));
        }
}

3 个答案:

答案 0 :(得分:2)

将您的号码 - 客户关系存储在地图中,您的代码将更加清晰和快捷。

// Map<phoneNumber, customerList>    
Map<String, List<Customer>> phoneNumberCustomersMap = new ...

答案 1 :(得分:0)

您的问题很可能与您尝试从for循环中的SammaTelNrLista列表中删除元素有关。要从集合中安全删除,您应该使用迭代器。

此外,如果删除过滤步骤,您可以使解决方案更有效率。将元素添加到SammaTelNrLista列表时,您可以检查名称是否已在列表中。只有在不存在的情况下才添加它。你可以使用地图。

答案 2 :(得分:0)

在第一个循环中:如果名称不相等且数字相等,则将数字添加到HashSet。之后循环遍历哈希集的条目并打印它们。