1.对象数组就是数组中里的每个元素都是类的对象,赋值时先定义对象,然后将对象直接赋值给数组。
正常数组:
int [ ] cs= new int[10];
示例:
Chicken[ ] cs=new Chicken [10];
使用对象数组实现多个Chicken的管理。
动态数组:
1.数组是一种线性数据结构
2.数组不适合做 插入(插入操作也得挪) 删除 等操作,适合添加,查找,遍历
package test;
import java.util.Arrays;
import java.util.Scanner;
public class test{
public static void main(String[] args){
ChickenManager cm=new ChickenManager(5);
//添加
cm.add(new Chicken(1,"小一",11));
cm.add(new Chicken(2,"小二",12));
cm.add(new Chicken(3,"小三",13));
cm.add(new Chicken(4,"小四",14));
cm.add(new Chicken(5,"小五",15));
cm.add(new Chicken(6,"小六",16));
System.out.println("数组的长度是"+cm.length());
//键盘获得查询ID号
System.out.println("------find-------");
System.out.println("请输入要查找的ID号(ID号<="+cm.getCount()+")");
Scanner sc=new Scanner(System.in);
int id = sc.nextInt();
while(id>cm.getCount()){
System.out.println("没有,请重新输入");
id=sc.nextInt();
}
//调用查询和全部显示
Chicken c=cm.find(id);
c.print();
System.out.println("------find all-------");
cm.printAll();
System.out.println("------update-------");
cm.update(new Chicken(1,"新一",12));
cm.printAll();
System.out.println("------delete-------");
cm.delete(id);
cm.printAll();
}
}
//小鸡管理类
class ChickenManager{
public ChickenManager(){}
private Chicken[] cs=null;
private int count=0;//记录当前数组的元素个数(下标)
public ChickenManager(int size){
if (size>0){
cs=new Chicken[size];
}else{
cs=new Chicken[5];
}
}
//打印数组长度
public int length(){
return cs.length;
}
//小鸡基本操作方法
//添加
public void add(Chicken c){
if(getCount()>=cs.length){
//数组已满,需要扩充
//算法一:扩充原来数组大小的一半 cs.length *3/2+1
//算法二:扩充原来数组的一倍 cs.length*2
int newlength =cs.length*2;
//前面是原数组,后面是新的长度
cs=Arrays.copyOf(cs, newlength);
}
cs[getCount()]=c;
setCount(getCount() + 1);
}
//删除
public void delete(int id){
Chicken c=new Chicken();
for(int i=0;i<count;i++){//外层循环找到要删除的ID
if(cs[i].getId()==id){//找到了要删除的对象,把该对象之后的对象向前移动一位
for(int j=i;j<=count-1-i;count++){
cs[j]=cs[j+1];
}
//把最后一个对象赋值为空(删除)
cs[count]=null;
count--;//下标减一
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<getCount();i++){
if (cs[i].getId()==id){
return cs[i];
}
}
return null;
}
//输出所有
public void printAll(){
for(int i=0;i<getCount();i++){
cs[i].print();
}
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}
//小鸡类(数据对象)value object(vo)/实体类/传输对象dto
class Chicken{
private int id;
private String name;
private int age;
public Chicken(){}//一般情况下最好保留默认的构造方法
public Chicken(int id ,String name,int age){
this.id=id;
this.name=name;
this.age=age;
}//设置三个私有参数的getter and setter方法
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("姓名是"+name+",年龄是"+age+",id是"+id);
}
}