(Java)搜索字符串的ArrayList

时间:2014-02-28 05:22:39

标签: string search arraylist

我正在创建一个程序,允许用户输入要搜索的联系人的姓名。如果找到联系人,则会显示联系人的其他信息(电话号码和电子邮件)。

My ArrayList如下所示:

ArrayList<Contact> contacts = new ArrayList<Contact>();

contacts.add(new Contact("Patrick McGee", "334-555-8860", "pmcgee123@gmail.com"));
contacts.add(new Contact("John Appleseed", "142-555-6740", "jappleseed99@gmail.com"));
contacts.add(new Contact("Matt Jordan", "213-555-2323", "mjordan23@gmail.com"));
contacts.add(new Contact("Kanye East", "255-434-9909", "keast123@gmail.com"));
contacts.add(new Contact("Derrick Flower", "144-555-1111", "dflower1@gmail.com"));

我有变量:String name,String num和String email 同样,要求用户输入名称(arraylist的第一个字符串)。 如果找到该名称,则将打印该联系人(包含所有信息)。我已经尝试在集合中使用BinarySearch,但这给了我非常混乱的错误。如果需要更多信息,请随时询问。 有这样的搜索方法吗?感谢。

1 个答案:

答案 0 :(得分:2)

不,没有一种方法可以做到这一点。你必须自己做,因为在这里你只需要检查一个属性。

for(Contact contact : contacts) {
    if(contact.getName().equals(nameToSearchFor)) {
        // return the contact, print it or whatever you need
    }
}

有一些像Comparable和equals这样的东西,API用于这种类型的东西,但只考虑名称的实现会破坏他们的合同。

可能定义一个仅查看名称并使用binarySearch的比较器,但这需要:

  • 联系以实现Comparable否则
  • 要排序的列表

说实话,在这种情况下做这些事情并没有什么好处。