对象数组与管理实例
欢迎观看菜鸟的第一篇博客
这篇博客就是将我之前接触到的一个对象数组与管理实例进行讲解以及代码展示
实例概括
这是我之前看的视频中写的一个使用对象数组实现对多个对象的管理的实例
- 首先需要一个对象类 :小鸡类Chicken (数据对象) value object(vo) 在类中封装一个些小鸡的属性如姓名,年龄等。以及有参无参构造方法还有print方法。
- 然后需要一个对象管理类:小鸡管理类ChickenManager,这个类主要用于对小鸡对象的管理如增加、删除、查找、更新、输出功能,类似动态数组的的实现。
- 最后当然就是需要一个主函数了用于对两个类进行组合调用。
实例代码
对象类 :小鸡类Chicken (数据对象) value object(vo) 如下
//小鸡类 (数据对象) value object(vo)
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 void setId(int id){
this.id = id;
}
public int getId(){
return id;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
public void print(){
System.out.println(" id="+id+" name="+name+" age="+age+" ");
}
}
对象管理类:小鸡管理类ChickenManager如下
//小鸡管理类
class ChickenManager{
private Chicken[] ck = null;
private int count = 0;//记录当前数组的元素个数(下标)
public ChickenManager(int size){
if(size>0){
ck = new Chicken[size];
}else{
ck = new Chicken[5];
}
};
public int length(){
return ck.length;
}
//添加:实现动态数组
public void add(Chicken c){
if(count>=ck.length){//数组已满,需要扩充
//算法一:扩充原来数组大小的一半 ck.length*3/2+1
//算法二:扩充原来数组大小的一倍 ck.length*2
int newLen = ck.length*2;
ck = Arrays.copyOf(ck,newLen);
}
ck[count] = c;
count++;
}
//删除
public void delete(int id){
for(int i=0;i<count;i++){
if(ck[i].getId()==id){
//找到了要删除的对象,将给对象之后的对象向前移动一位
for(int j=i;j<count-1;j++){
ck[j] = ck[j+1];
}
//把最后一个对象赋为空值(删除)
ck[count-1] = null;
count--;//下标--
break;
}
}
}
//更新
public void update(Chicken c){
Chicken temp = find(c.getId());
if(temp!=null){
temp.setName(c.getName());
temp.setAge(c.getAge());
}
}
//查找
public Chicken find(int id){
for(int i=0;i<count;i++){
if(ck[i].getId()==id){
return ck[i];
}
}
return null;
}
//输出所有
public void printAll(){
for(int i=0;i<count;i++){
ck[i].print();
}
}
}
主函数如下
import java.util.Arrays;
public class Test{
public static void main(String[] args){
ChickenManager cm = new ChickenManager(5);
//添加
cm.add(new Chicken(1,"小小",6));
cm.add(new Chicken(2,"小一",4));
cm.add(new Chicken(3,"小二",1));
cm.add(new Chicken(4,"小三",2));
cm.add(new Chicken(5,"小四",9));
cm.add(new Chicken(6,"小五",8));
System.out.println("数组的长度为:"+cm.length());
System.out.println("------------printAll-------------");
cm.printAll();
System.out.println("------------find-------------");
Chicken ck = cm.find(4);
ck.print();
System.out.println("------------update-------------");
cm.update(new Chicken(1,"战斗鸡",10));
cm.printAll();
System.out.println("------------delete-------------");
cm.delete(4);
cm.printAll();
}
}
代码运行结果
数组的长度为:10
------------printAll-------------
id=1 name=小小 age=6
id=2 name=小一 age=4
id=3 name=小二 age=1
id=4 name=小三 age=2
id=5 name=小四 age=9
id=6 name=小五 age=8
------------find-------------
id=4 name=小三 age=2
------------update-------------
id=1 name=战斗鸡 age=10
id=2 name=小一 age=4
id=3 name=小二 age=1
id=4 name=小三 age=2
id=5 name=小四 age=9
id=6 name=小五 age=8
------------delete-------------
id=1 name=战斗鸡 age=10
id=2 name=小一 age=4
id=3 name=小二 age=1
id=5 name=小四 age=9
id=6 name=小五 age=8
总结
这段代码我是之前看Java学习视频见到的,然后自己后来打了一遍,现在想写博客了,而自己知识又很薄弱,所以就写了这个实例给大家看一下,也可以帮助大家对对象数组与管理以及动态数组有一些初步的认识。如果大家对这个实例有问题也可以提出来,大家一起讨论一下。好了,我的第一篇博客就这样诞生了,我现在大三基础也很薄弱,让我们一起加油吧!
对了我之前还写过一个Java学习视频讲授的小demo主要用到了:
- xStream组件,dom4j组件
- 文件对象流输入输出
- 自定义异常
- 分层概念 view->service->dao(data access object)
- 设计模式:单例,工厂
- 集合
- 读取properties文件
- Git
如果大家有兴趣的话也可以研究一下
链接: https://github.com/tongweidng/ClothesSupermarket