对象数组

import java.util.Arrays;
class ObjectArrayDemo
{
	public static void main(String[] args) 
	{
		MonkeyManager mm = new MonkeyManager();
		mm.add(new Monkey("悟空",'公'));
		mm.add(new Monkey("悟饭",'公'));
		mm.add(new Monkey("小白",'母'));
		mm.list();
		System.out.println("--------------------------");
		mm.delete("悟饭");
		mm.list();
		System.out.println("--------------------------");
		mm.find("小白");
		Monkey m1 = mm.find("小白");
		m1.print();
		System.out.println("--------------------------");
		Monkey m2 = new Monkey("小白",'公');
		mm.update(m2);
		mm.list();
		System.out.println("--------------------------");
		mm.add(new Monkey("小黑",'公'));
		mm.add(new Monkey("小红",'母'));
		mm.add(new Monkey("小黑",'公'));
		mm.add(new Monkey("小红",'母'));
		mm.list();

	}
}

//Monkey管理类
class MonkeyManager{
	private Monkey[] monkeys = new Monkey[3];
	private int count = 0;//当前对象的个数
	
	//添加Monkey
	public void add(Monkey m){
		//当数组空间不足,需要进行动态扩展
		if(count>=monkeys.length){
			//新数组的长度(当前数组长度的一半左右)
			int newlen = (monkeys.length*3)/2+1; 
			monkeys = Arrays.copyOf(monkeys,newlen);
		}
			monkeys[count] = m;
			count++;

		/*if(count<monkeys.length){
			monkeys[count] = m;
			count++;
		}else{
			System.out.println("空间已满");
		}*/
	}
	//删除Monkey
	public void delete(String name){
		for(int i=0;i<count;i++){
			//equals:表示比较两个字符串的值是否相等,为什么用equals呢?因为对象存放在堆里面而且==比较在栈里面
			//==表示比较两个对象的内存地址
			if(monkeys[i].getName().equals(name)){
				//循环把后面对象往前移动
				for(int j=i;j<count-1;j++){
					monkeys[j] = monkeys[j+1];
				}
				//吧最后一个元素赋值为null
				monkeys[count-1] = null;
				count--;
				
			}
		}
	}
	
	//查找
	public Monkey find(String name){
		for(int i=0;i<count;i++){
			if(monkeys[i].getName().equals(name)){
				return monkeys[i];
			}
		}	
		return null;
	}

	//修改Monkey
	public void update(Monkey monkey){
		Monkey m = find(monkey.getName());
		if(m!=null){
			m.setSex(monkey.getSex());
		}
	}


	//遍历对象数组
	public void list(){
		for(int i=0;i<count;i++){
			monkeys[i].print();
			//System.out.println(monkeys[i]);
		}
	}
}

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 x){
		this.sex = sex;
	}
	public char getSex(){
		return sex;
	}
	public void print(){
		System.out.println("name="+name);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值