java 对象数组(增删改查)

package com.vince.lei;


import java.util.Arrays;


import org.omg.CORBA.PUBLIC_MEMBER;


public class DuiXiangShuZuDemo {
// 对象数组:数组中的每个元素都是类的对象,赋值时先定义对象,然后将对象直接赋给数组
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MonkeyManager mm = new MonkeyManager();
// 调用添加方法,,传递的参数是一个对象实例
mm.add(new Monkey("悟空", '公'));// 使用匿名对象
mm.add(new Monkey("悟饭", '公'));
mm.add(new Monkey("小白", '母'));
mm.add(new Monkey("小加", '母'));
mm.add(new Monkey("小间", '公'));
mm.add(new Monkey("小大", '公'));
mm.list();
System.out.println("下面是查找----------------------");
// 调用打印的方法
// mm.delete("悟空");
// 定义一个Monkey类变量来接收结果
// 查找测试
Monkey m1 = mm.find("小白");
m1.print();
System.out.println("修改后----------------------");
// 修改测试
Monkey m2 = new Monkey("小白", '公');
mm.upData(m2);
m2.print();
System.out.println("----------------------");
}
}


// MonkeyManager管理类
class MonkeyManager {
// 定义对象数组,,存放3个元素
private Monkey[] monkeys = new Monkey[3];
private int count;// 累计添加对象的个数,表示累计数组下标即猴子存放的位置!!!!


// 添加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++;// 每添加一个对象,count自增1
}


// 遍历输出对象数组中的值
// 此时对象数组中的值是对象的引用,遍历出来是地址,,必须用对象调用方法Monkeys[i].print()
public void list() {
// 记住这个判断条件 count
for (int i = 0; i < count; i++) {
monkeys[i].print();
}
}


// 删除操作
// 比如我要删除 悟饭 ,我肯定要传参进来进行比较,,一旦找到相等的立即删除
public void delete(String name) {
// (对象比较来说)equals表示比较两个对象实例化后的值是否相等
// (对象比较来说)== 表示比较两个对象的内存地址(就是对象的引用变量存放的内存地址)
for (int i = 0; i < monkeys.length; i++) {
if (monkeys[i].getName().equals(name)) {
// 比如:删除第二个,第三个移到第二个位置,保证中间没有空的位置,可以将最后面的位置制空,便于维护管理!
// 删除原理:删除第i个位置上的元素,此时,需要将从第i个位置之后的所有元素都要向前移动一个位置
// 所以 一定要注意循环变量的初始值
// 因为下面的monkeys[j+1] j加了1,所以此时count=count-1;必须是count-1;
for (int j = i; j < count - 1; j++) {
// 后面的往前移
monkeys[j] = monkeys[j + 1];
}
}
// 编写代码的时候,最后一个位置要附空,便于维护管理!
// 将最后一个元素赋值为空,null,便于维护管理!
monkeys[count - 1] = null;
// 删除一个元素,,count自减1
count--;
break; // 使用if语句在不满足条件下必须if语句
}
}


// 查找操作
// 比如我要查找 小白,,我就需要传参进来,找到相等的就是结果
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 upData(Monkey monkey) {
Monkey m = find(monkey.getName());
if (m != null) {
m.setSex(monkey.getSex());
}
}
}


// Monkey类
class Monkey {
private String name;
private char sex;


// 构造方法
public Monkey() {
}


public Monkey(String name, char sex) {
this.name = name;
this.sex = sex;
}


// 属性的读写操作
public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}


public char getSex() {
return sex;
}


public void setSex(char sex) {
this.sex = sex;
}


public void print() {
System.out.println("name=" + name + ",sex" + sex);
}

}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值