我正在创建一个程序,允许用户输入要搜索的联系人的姓名。如果找到联系人,则会显示联系人的其他信息(电话号码和电子邮件)。
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,但这给了我非常混乱的错误。如果需要更多信息,请随时询问。 有这样的搜索方法吗?感谢。
答案 0 :(得分:2)
不,没有一种方法可以做到这一点。你必须自己做,因为在这里你只需要检查一个属性。
for(Contact contact : contacts) {
if(contact.getName().equals(nameToSearchFor)) {
// return the contact, print it or whatever you need
}
}
有一些像Comparable和equals这样的东西,API用于这种类型的东西,但只考虑名称的实现会破坏他们的合同。
可能定义一个仅查看名称并使用binarySearch的比较器,但这需要:
说实话,在这种情况下做这些事情并没有什么好处。