【发布时间】:2016-02-27 21:58:51
【问题描述】:
switch(menuChoice) {
case 1:
System.out.println("Enter your contact's first name:\n");
String fname = scnr.next();
System.out.println("Enter your contact's last name:\n");
String lname = scnr.next();
Necronomicon.addContact(new Person(fname, lname));
break;
// main truncated here for readability
import java.util.ArrayList;
public class AddressBook {
ArrayList<Person> ArrayOfContacts= new ArrayList<Person>();
public void addContact(Person p) {
ArrayOfContacts.add(p);
/*
for(int i = 0; i < ArrayOfContacts.size(); i++) {
if(ArrayOfContacts.get(i).getID() != p.getID())
ArrayOfContacts.add(p);
else
System.out.println("Sorry this contact already exists.");
}
*/
}
}
public class Person {
private String fName = null;
private String lName = null;
private static int ID = 1000;
public Person(String fName, String lName) { // Constructor I'm using to try and increment the ID each time a Person object is created starting at 1001.
this.fName = fName;
this.lName = lName;
ID = ID + 1;
}
}
我正在尝试创建一个通讯录,其中每个联系人都有一个名字、姓氏和一个唯一的 ID。
我的问题是如何防止用户输入具有相同名字和姓氏的重复联系人?我应该在 addContact 方法中还是在 main 中实现某种检查?如何?
【问题讨论】:
-
不应该阻止添加相同的id吗?普通通讯录名称重复
-
好点。这可能是一种更好的方法。也许我可以使用 HashSet 并只使用用户 ID 来防止重复。
-
您可以使用
HashMap<Integer, Person> -
我在学习 Cricket 时还没有遇到过 HashMaps。我假设我可以使用 HashMap 而不是使用 arrayList 来存储我的人员对象?我会将唯一 ID 作为 Integer 参数传递吗?
-
对你来说 HashSet 是最好的选择。顺便说一句,TreeSet 集合不接受重复和自动排序元素。顺便说一下,Java 中的变量按照惯例应该是驼峰式大小写。它应该是 arrayOfContacts。