import java.util.Arrays;
/*
* 对象数组:数组中存放对象。
* 1.动态数组————>集合ArrayList
* (1)自动扩容:记录添加数组的下标,与数组长度比较,当小于等于时,自动扩容(方便:增加、查找)
* (2)删除某一位置元素,之后元素要前移一位,最后一位赋值为空(麻烦:删除)
* */
public class Test1 {
public static void main(String[] args) {
ChickenManager cm = new ChickenManager(5);
cm.add(new Chicken(1,"a",1));
cm.add(new Chicken(2,"b",2));
cm.add(new Chicken(3,"c",3));
cm.add(new Chicken(4,"d",4));
cm.add(new Chicken(5,"e",5));
System.out.println(cm.length());
cm.add(new Chicken(6,"f",6));
System.out.println(cm.length());
cm.print();
System.out.println("----------------find----------");
Chicken chicken = cm.find(5);
chicken.print();
System.out.println("----------------update----------");
cm.update(new Chicken(1,"aaa",100));
System.out.println("----------------delete----------");
cm.delete(1);
cm.print();
}
}
//小鸡管理类
class ChickenManager{
private Chicken[] cs = null;
private int count = 0;//记录数组下标
public ChickenManager(){}
public ChickenManager(int size){//对象数组,当小鸡个数大于0时,根据数量创建。没有小鸡时,默认创建5个。
if (size>0){
cs = new Chicken[size];
}else {
cs = new Chicken[5];
}
}
//数组长度
public int length(){
return cs.length;
}
//添加鸡笼,实现动态数组,自动扩容
public void add(Chicken c){
if (count>=cs.length){//记录的下标大于数组长度,需要扩容
int newLen = cs.length*2;//直接扩充到原来数组长度的两倍
cs = Arrays.copyOf(cs,newLen);//复制数组,在原来基础上扩容
cs[count]=c;
count++;
}else {
cs[count]=c;
count++;
}
}
//删除数组中某一位置元素删除,之后位置要往前挪动。(方便添加)
public void delete(int id){
for (int i = 0; i < count; i++) {
if (cs[i].getId()==id){//找到要删除的对象,把之后的对象往前移动一位
for (int j = i; j < count-1; j++) {
cs[j]=cs[j+1];
}
cs[count-1]=null;//把最后一个对象赋值为空(删除)
count--;
break;
}
}
}
//更新小鸡信息,年龄
public void update(Chicken c){
Chicken chicken = find(c.getId());
chicken.print();
if (chicken!=null){
chicken.setName(c.getName());
chicken.setAge(c.getAge());
}
chicken.print();
}
//查找小鸡
public Chicken find(int id){
for (int i = 0; i < count; i++) {
if (cs[i].getId()==id){
return cs[i];
}
}
return null;
}
//输出所有
public void print(){
/* for (Chicken c:cs) {
if (c!=null){
c.print();
}else {
break;
}
}*/
for (int i = 0; i < count; i++) {
cs[i].print();
}
}
}
//小鸡类(根据对象的作用:数据对象value object、实体对象、传输对象)
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;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void print(){
System.out.println("小鸡的ID:"+this.id+"小鸡的名字:"+this.name+"小鸡的年龄:"+this.age);
}
}
【千锋教育Java零基础全套视频教程(一学就会,java入门自学必备)】 https://www.bilibili.com/video/BV1FK4y1x7Ny/?p=51&share_source=copy_web&vd_source=fec080968f12b55fd38552bcd7731427