(三)数组中存储对象
一、数组描述
在现实世界中,数组并不仅仅可以存储像我们以前所描述的基础数据类型,它还可以存储对象(当然,在Java语言中实际存储的是对象的引用。)下图描述了数组存储对象的原理:
二、Java语言描述数组存储对象:
package com.solid.array;
public class Person {
//名
private String firstName;
//姓
private String lastName;
//年龄
private int age;
/**
* 构造方法
* @param firstName
* @param lastName
* @param age
*/
public Person(String firstName, String lastName, int age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
package com.solid.array;
public class ObjectArray {
//对象数组
private Person[] person;
//数组下标
private int nElems;
/**
* 构造方法
* @param max
*/
public ObjectArray(int max) {
person = new Person[max];
nElems = 0;
}
/**
* 插入对象
* @param firstName
* @param lastName
* @param age
*/
public void insert(String firstName, String lastName, int age) {
person[nElems] = new Person(firstName, lastName, age);
nElems++;
}
/**
* 删除对象(假设lastName不重复)
* @param lastName
* @return
*/
public boolean delete(String lastName) {
int i;
for(i=0; i<nElems; i++) {
if(person[i].getLastName().equals(lastName))
break;
}
if(i == nElems) {
System.out.println("can't find: " + lastName);
return false;
} else {
for(int j=i; j<nElems; j++) {
person[j] = person[j+1];
}
nElems--;
System.out.println("delete success");
return true;
}
}
/**
* 查找对象(假设lastName不重复)
* @param lastName
* @return
*/
public boolean find(String lastName) {
int i;
for(i=0; i<nElems; i++) {
if(person[i].getLastName().equals(lastName))
break;
}
if(i == nElems) {
System.out.println("can't find: " + lastName);
return false;
} else {
System.out.println("find it");
return true;
}
}
/**
* 显示所有对象
*/