/**
對象數(shù)組與管理
使用對象數(shù)組實(shí)現(xiàn)多個(gè)Chicken的管理
動(dòng)態(tài)數(shù)組:
1.數(shù)組是一種線性數(shù)據(jù)結(jié)構(gòu)
2.數(shù)組不適合做刪除插入等操作乐导,適合添加,查找抵蚊,遍歷等操作
*/
import java.util.Arrays;
public class TestChicken{
public static void main(String[]args){
ChickenManager cm = new ChickenManager(5);
//添加
cm.add(new Chicken(1,"小小",10));
cm.add(new Chicken(2,"小二",8));
cm.add(new Chicken(3,"小三",6));
cm.add(new Chicken(4,"小紅",2));
cm.add(new Chicken(5,"小奮",4));
cm.add(new Chicken(6,"小斗",1));
System.out.println("數(shù)組的長度是"+cm.length());
System.out.println("...........printAll..........");
cm.printAll();
System.out.println("...........find..........");
Chicken c = cm.find(6);
c.print();
System.out.println("...........update.........");
cm.update(new Chicken(1,"鐵公雞",20));
cm.printAll();
}
}
//小雞管理類
class ChickenManager{
private Chicken[] cs = null;
private int count = 0;//記錄當(dāng)前數(shù)組元素個(gè)數(shù)(下標(biāo))
//構(gòu)造方法
public ChickenManager(int size){
if(size>0){
cs = new Chicken[size];
}else{
cs = new Chicken[5];
}
}
public int length(){
return cs.length;
}
//添加:實(shí)現(xiàn)動(dòng)態(tài)數(shù)組
public void add(Chicken c){
if(count>=cs.length){//數(shù)組已滿躏升,需要擴(kuò)充
//算法1:擴(kuò)充原來數(shù)組大小的一半左右 cs.length *3/2 + 1
//算法2:擴(kuò)充原來數(shù)組的一倍 cs.length*2
int newLen = cs.length*2;
cs = Arrays.copyOf(cs,newLen);
}
cs[count] = c;
count++;
}
//刪除
public void delete(int id){
for(int i=0;i<count;i++){
if(cs[i].getId()==id){
//找到了要?jiǎng)h除的對象,把該對象之后的對象向前移動(dòng)一位
for(int j=i;j<count-1;j++){
cs[j]=cs[j+1];
}
//把最后一個(gè)對象賦值為空(刪除)
cs[count-1]=null;
count-- ;//下標(biāo)減一
break;
}
}
}
//更新
public void update(Chicken c){
Chicken temp = find(c.getId());
if(temp!=null){
temp.setName(c.getName());
temp.setAge(c.getAge());
}
}
//查找
public Chicken find(int id){
for(int i=0;i<count;i++){
if(cs[i].getId()==id){
return cs[i];
}
}
return null;
}
//輸出所有
public void printAll(){
for(int i=0;i<count;i++){
cs[i].print();
}
}
}
//小雞類(數(shù)據(jù)對象)value object(vo)
class Chicken{
private int id;
private String name;
private int age;
public Chicken(){}//一般情況下最好保留默認(rèn)的構(gòu)造方法
public Chicken(int id,String name,int age){
this.id = id;
this.name = name;
this.age = age;
}
public void setId(int id){
this.id = id;
}public int getId(){
return id;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return age;
}
public void print(){
System.out.println("id="+id+",name="+name+",age="+age);
}
}
image.png