返回一个arraylist并遍历返回的列表

时间:2014-04-15 15:12:23

标签: java arraylist return

我试图从方法getNumbers(包含字符串)中返回一个arraylist

public ArrayList<String> getNumbers(){

    return (numeros);
}

然后使用搜索器我试图比较变量m(包含要查找的所需信息)和返回的列表。

public class NumberSearcher {

Reader reader = new KeyboardReader();

    public NumberSearcher(ArrayList<Contacto> contactos){

        String m = reader.read();

        for(int i = 0; i<contactos.size();i++){
            if(contactos.get(i).getPhoneNumbers().contains(m)){
                contactos.get(i).display(); 
        }
    }

}

}

我已经成功使用这种相同的样式创建了一个搜索器,但仅在使用仅返回String的方法时。

问题是它不起作用。如果有匹配则应显示联系信息,但似乎没有正确“比较”,因为没有任何反应。

2 个答案:

答案 0 :(得分:1)

很难理解你在这里问的问题。你的getNumbers方法没有从第二个代码块调用,所以我不知道它与任何东西有什么关系。它还不清楚你的意思是什么问题。您能否尝试向我们提供有关出错的更详细说明?

无论如何,我会在这里给你一些一般的建议,但是如果不知道这个问题就很难说这会有多大帮助。

首先,几乎总是建议将方法的返回类型作为List接口,而不是特定的实现(ArrayList等)。您可以在方法中指定返回类型,但这样他们客户端不需要知道底层数据结构是什么,并且您对未来的数据结构更改也很灵活。

public List<String> getNumbers(){
    return (numeros);
}

其次,我可能会更改名称&#39; getNumbers&#39;更精确的东西 - 如果我看到一个&#39; getNumbers&#39;方法我希望它返回一些数字实体,而不是字符串列表。如果他们是电话号码,那么明确称之为“getPhoneNumbers&#39;。

虽然我不完全确定我明白你的要求,但我认为这可以解决你的问题:

for(int i = 0; i < contactos.size(); i++) {
    Contacto next = contactos.get(i);
    if(next.getEmails().contains(m)) {
        next.display();
    }
}

作为事后的想法,你有没有具体的理由只检查字符串收容?我建议您检查不区分大小写的相等性,除非您确实想要找出包含元素的字符串。

答案 1 :(得分:0)

这是你在找什么?

public class EmailSearcher {

Reader reader = new KeyboardReader();

public EmailSearcher(ArrayList<Contacto> contactos){

 while(reader.read() != 'keyThatTerminates')   {
 String m = reader.read();

    for(int i = 0; i<contactos.size();i++){
        var row = contactos.get(i);
        if(row.getEmails().contains(m)){
            row.display(); 
    }
}
}
}

}