对象数组(动态数组)

对象数组
课程大纲
一、 对象数组
1、 对象数组就是数组里的每个元素存储的都是类的对象,赋值时先定义对象,然后将对象直接赋值给数组。
示例:Monkey[] monkeys = new Monkey[10];
使用对象数组实现对多个Monkey的管理

import java.util.Arrays;

/**
对象数组
*/

class ObjectArrayDemo
{
public static void main(String[] args)
{
MonkeyManger mm = new MonkeyManger();
//添加
mm.add(new Monkey(“小白”,’母’));
mm.add(new Monkey(“威哥”,’公’));
mm.add(new Monkey(“苍老师”,’母’));
mm.list();
System.out.println(“—————-“);
System.out.println(“删除后的结果显示:”);
//删除
mm.delete(“苍老师”);
mm.list();
//查找
System.out.println(“—————-“);
System.out.println(“查找后的结果:”);
Monkey m1 = mm.find(“小白”);
m1.print();
//修改测试
System.out.println(“—————–”);
Monkey m2 =new Monkey(“小白”,’公’);
mm.update(m2);
System.out.println(“修改过后:”);
mm.list();

}

}
class MonkeyManger
{
private Monkey[] monkeys = new Monkey[3];
private int count = 0;//当前对象的个数
//添加Monkey
public void add(Monkey m)
{

   if(count<monkeys.length)
    {
       monkeys[count] = m;
       count++;
    }
    else
    {
        System.out.println("空间已满");
    }
    /*
    //当空间不足时,需要动态扩展
    public void adds(Monkey m)
    {
        if(count>=monkeys.length)
        {  //新数组的长度为原来的1.5倍,扩展一般,
           int newlen = (monkeys.length*3)/2 + 1;
           monkeys = Arrays.copyOf(monkeys,newlen);

        }
         monkeys[count] = m;
         count++;
    }
    */

}//修改
public void update(Monkey monkey)
{
   Monkey m = find(monkey.getName());
   if(m!=null)
    {
       m.setSex(monkey.getSex());
    }
}
//查找
public Monkey find(String name)
{
   for(int i = 0;i<count;i++)
    {
        if(monkeys[i].getName().equals(name))
        {
            return monkeys[i];
        }
    }
    return null;
}

//删除
//根据对象名字删除对象
public void delete(String name)
{
   for(int i = 0;i<count;i++)
    {
       //equals表示比较两个字符串对象的值是否相等
       //==表示两个对象的内存地址是否一样
        if(monkeys[i].getName().equals(name))
        {  //每个对象都要往前移动
           for(int j = i;j<count-1;j++)
            {
               monkeys[j] = monkeys[j+1];
            }
            //最后一个对象的地址赋值成空
            monkeys[count-1] = null;
            count--;
            break;
        }
    }
}
//遍历输出数组对象
public void list()
    {
        for(int i = 0;i<count;i++)
        {
            //System.out.println(monkeys[i]);
            monkeys[i].print();
        }
    }

}
class Monkey
{
private String name;
private char sex;
public Monkey()
{
}
public Monkey(String name,char sex)
{
this.name = name;
this.sex = sex;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setSex(char sex)
{
this.sex = sex;
}
public char getSex()
{
return sex;
}
public void print()
{
System.out.println(“name =”+name+”,sex = “+sex);
}
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值