对象数组 ObjectArray

来源:互联网 发布:网络电话隐藏号码软件 编辑:程序博客网 时间:2024/05/19 16:19
/**对象数组*/import java.util.Arrays;public class ObjectArrayDemo{public static void main(String[] args){MonkeyManager mm = new MonkeyManager();//添加测试System.out.println("----------添加测试-----------");mm.add(new Monkey("悟空",'公'));mm.add(new Monkey("雪猴",'母'));mm.add(new Monkey("猕猴",'公'));mm.list();//删除测试System.out.println("----------删除测试-----------");mm.delete("雪猴");mm.list();//查找测试System.out.println("----------查找测试-----------");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.list();}}class MonkeyManager{private Monkey[] monkeys = new Monkey[3];private int count = 0;  //当前对象的个数//添加Monkeypublic void add(Monkey m){//当数组空间不足,需要进行动态扩展if (count>=monkeys.length){//新数组的长度(当前数组长度的1.5倍左右)int newLen = (monkeys.length * 3) / 2 + 1;monkeys = Arrays.copyOf(monkeys,newLen);   //public static char[] copyOf(char[] original,int newLength)}monkeys[count] = m;count++;}//删除Monkeypublic 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;}}}//查找Monkey 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();}}}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 0