Java 联系人列表程序
我的任务是创建一个基本的联系人列表程序,让用户Java 联系人列表程序,java,Java,我的任务是创建一个基本的联系人列表程序,让用户 输入新联系人 打印联系人列表 按姓氏检索联系人 电子邮件,以及 检索特定邮政编码中的联系人 我的想法是创建3个类: Main()、Contact()和ContactList()。我会让main()处理菜单和逻辑Contact()将是我为每个联系人实例化的类对象ContactList()将是定义联系人对象数组的类,并定义输入和检索信息的方法 问题是我不知道该怎么做。我的上述方法有效吗?我不太清楚该怎么做,如果您有任何建议和想法,我将不胜感激。我会让您
Main()
、Contact()
和ContactList()
。我会让main()
处理菜单和逻辑Contact()
将是我为每个联系人实例化的类对象ContactList()
将是定义联系人对象数组的类,并定义输入和检索信息的方法
问题是我不知道该怎么做。我的上述方法有效吗?我不太清楚该怎么做,如果您有任何建议和想法,我将不胜感激。我会让您的联系人列表实现一个通用列表
public class ContactdList implements List<Contact>
公共类联系人列表实现列表
但是,是的,这听起来很管用。我假设这是一门课,你不想太离题老师要求/教授的内容。我会有
联系人列表
只有必要的有意义的方法:
interface ContactList {
void add(Contact)
List<Contact> getList()
Contact getContactByLastName(String)
Contact getContactByEmail(String)
Contact getContactByZipCode(String)
}
接口联系人列表{
无效添加(联系人)
List getList()
联系人getContactByLastName(字符串)
联系人getContactByEmail(字符串)
联系人getContactByZipCode(字符串)
}
然后,您可以使用一个
ContactArrayList
来实现该接口,它使用ArrayList
作为备份对象。以下是我的想法,并提供一些伪代码
下面的类是一个基于需求的联系人应该包含哪些内容的基本实现。我选择使用字符串字段,因为这只是一个家庭作业问题,不需要额外的工程
public class Contact
{
private String firstName;
private String lastName;
private String email;
private String zipCode;
public Contact()
{
//initialize all variables to empty string
}
public Contact(String firstName,String lastName, String email, String zipCode)
{
//Use this.variableName to set values
}
//getters/setters
}
public class Assignment1 //Or whatever assignment number this is == Main()
{
List<Contact> contacts;
public static void main(String[] args)
{
//Retrieve user input
// Execute rest of program
}
void printContacts(List<Contact> contacts)
{
foreach(Contact in contacts)
{
print(Contact.toString());
}
}
Contact getContactByLastName(String lastName)
{
foreach(Contact in contacts)
{
if(Contact.lastName == lastName)
return Contact;
}
else
Contact does not exist
}
void addContact(Contact contact)
{
contacts.add(contact);
}
}
公共类联系人
{
私有字符串名;
私有字符串lastName;
私人字符串电子邮件;
私有字符串zipCode;
公众联络()
{
//将所有变量初始化为空字符串
}
公共联系人(字符串firstName、字符串lastName、字符串email、字符串zipCode)
{
//使用this.variableName设置值
}
//能手/二传手
}
公共类Assignment1//或这是==Main()的任何赋值号
{
列出联系人名单;
公共静态void main(字符串[]args)
{
//检索用户输入
//执行程序的其余部分
}
作废打印联系人(列出联系人)
{
foreach(触点中的触点)
{
打印(Contact.toString());
}
}
联系人getContactByLastName(字符串lastName)
{
foreach(触点中的触点)
{
如果(Contact.lastName==lastName)
回接;
}
其他的
联系人不存在
}
无效添加联系人(联系人联系人)
{
联系人。添加(联系人);
}
}
创建一个新的列表实现没有意义,那么公共类ContactList扩展ArrayList如何?@jornb87:这也可以,但会将您绑定到ArrayList。如果你决定要一个LinkedList呢?当然,在这种情况下,这是不太可能的,所以我可能想得太多了……这两个都实现了相同的接口,所以无论如何,这将是一个简单的重构,对吗?您能用Java参数化该类以实现参数列表中的类型吗?我对Java中的泛型知之甚少。@keith.layne:在这种情况下,我可能过度设计了它,但……这取决于谁在使用它。如果您控制所有的代码(在本例中可能是这样),那么重构可能会相当容易。如果另一方面,如果你不这样做,你就破坏了所有取决于你的课程的东西。因为它已经实现了List,所以我看不出参数化会给您带来什么。@jmoreno我的意思是扩展。我的错。与公共类联系人列表中一样,它扩展了T
。我不知道Java的合法性和可行性。可能对这个问题也没什么帮助。嘿,谢谢你的帮助。你能看看我上面的框架代码吗?这篇文章现在已经编辑好了。请看一看我上面列出的问题。我认为这应该是一个单独的问题。@jmoreno,如果你的意思是我应该通过说单独的问题来创建另一个主题,我已经这样做了,并且因为“重新发布”而关闭了我的主题