我的教授让我做了这两个实验室,我完成了第一个实验,但我不知道如何做第二个。
我完成了上面的那个。
public class Person { private String first; private String last;
private static int idNumber = 1001; int Id; private String full;
Person(){
first = "John";
last = "Doe";
int idNumber;
full = first +" "+ last; }
Person(String fn,String ln){
first = fn;
last = ln;
Id = idNumber++;
full = first +" "+ last; }
static int getidNumber(){
return idNumber; }
void setfirst(String fn) {
first = fn; }
String getfirst(){
return first; }
void setlast(String ln){
last = ln; }
String getlast(){
return last; }
@Override public String toString(){
String p1 = "First name: " +first+ " Last Name:" +last+
"\tThe full name is: "+full+" Id#"+idNumber;
return p1;
} }
public class PersonTester {
public static void main(String[] args) {
// TODO code application logic here
Person p = new Person();
System.out.println(p);
Person p1 = new Person("Dennis", "Rodman");
System.out.println(p1);
Person p2 = new Person("Michael", "Jordan");
System.out.println(p2);
System.out.println("First name: " +p1.getfirst());
}
}
为了做第2项,我需要学习什么?数组,.length?等等?我只知道非常基础,所以请帮助我。
公共类AddressBookTester {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
}
}
import java.util.ArrayList;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import java.util.*;
public class AddressBook {
private ArrayList<Person> contactList;
AddressBook(){
contactList = new ArrayList<Person>();
}
void add (Person P){
if (!contactList.contains(P)){
contactList.add(P);
}
}
void add(String fn, String ln)
{
contactList.add(new Person (fn, ln));
}
void remove (Person P){
contactList.remove(P);
}
ArrayList<Person> Search(String name)
{
for ( int i=0; i< contactList.size(); i++){
//i dont know what to do here
}
Person Search (int id){
Person p = null;
//same here
}
}
void printlist() {
for ( int i=0; i< contactList.size(); i++){
Person P = contactList.get(i);
System.out.println(P);
}
}
}
答案 0 :(得分:4)
好的,首先,您知道需要一个AddressBook类。所以你知道
class AddressBook { // something goes here
}
你知道它会有这三种方法(也许还有其他方法)
class AddressBook {
public void add(Person p){ /* do something here */ }
public void delete(Person p){ /* do something here */ }
public Person searchByFirstName(String fn){ /* do something here */ ; return person;}
}
现在,考虑如何存储您的人员。目前,采取可能有效的最简单的事情,这可能是一个数组
class AddressBook {
private Person[] p; //....
你需要创建它,所以你想要的地方p = new Person[1000];
- 我选择了1000“可能足够大”。你可以做更复杂的事情,但现在这是最简单的。
现在,问问自己“我怎样才能将一个人添加到我的数组p?”。填写。“我怎么能删除一个人?”填写。(请记住,您始终可以将null
放入数组中以将该插槽标记为不再使用。)并且“如何在数组中找到一个人?”
最后,在类中添加一个main方法
public static void main(String[] args){ /* test here */ }
让你只需运行类就可以直接测试代码。
答案 1 :(得分:1)
我会将Comparable添加到您的人员中,然后使用OrderSet或ArrayList将它们保存在您的地址簿中。好处是使用Comparable和Collections是Java会为你排序它们然后你可以只为你的目标进行二进制搜索。
答案 2 :(得分:0)
一个非常简单的实现是使用java.util.Set<Person>
,因为它会为您处理所有事情。那么,看看java.util
中的集合框架。
如果你想从地面做到这一点,是的,看看数组,如何定义它们,如何访问元素等等。
答案 3 :(得分:0)
我会使用一个包含java.util.Map<Integer, Person>
作为地址簿的课程。由于id
字段唯一标识Person,因此映射是正确的数据结构。远离阵列,因为他们需要太多的手工工作。 Lists和Sets没有Person所拥有的键:所以Map在这里是一个很自然的选择。
答案 4 :(得分:0)
您的教授可能已告诉您是否应使用 Sets
或LinkedLists
来执行此操作。
他提到过这两个概念吗?如果是这样的话,我可以跟着你再次走过去。
也可以使用数组,但是您必须立即设置地址簿的最大大小,例如Charlie Martin在 p = new Person[1000];