/*
做一个对象的容器(模仿Java.util包中的Set),要求:
◇能往里面放任意类型的对象; add( )
◇能从里面读取对象; getAll( )
◇能判断容器中是否已经存在某对象。 Contains( )
◇能返回容器当前所存放对象的个数。 Size( )
◇如果里面有重复的对象则放不进去。
*/
public class MySet {
private Object[] objs=new Object[0];
/**
* 添加一个对象(元素)到当前集合中
* @param obj 将要添加到集合中的对象(元素)
* @return 若集合中已经存在该被添加对象则返回false,否则返回true
*/
public boolean add(Object obj){
if(contains(obj)){
return false;
}
//程序能运行到这里,说明容器中不包含obj
//把obj添加到容器(数组objs)
//1创建一个新的数组,长度为原来的加1
Object tempObjs[] = new Object[objs.length+1];
//2把旧数组中的元素拷到新数组中
System.arraycopy(objs, 0, tempObjs, 0, objs.length);
//3把obj添加到新数组中
tempObjs[objs.length]=obj;
//4把objs指向新的数组
objs=tempObjs;
return true;
}
public Object[] getAll(){
return objs;
}
public boolean contains(Object obj){
for(Object o:objs){
if(o.equals(obj)){
return true;
}
}
return false;
}
public int size(){
return objs.length;
}
}
import java.util.Date;
import org.junit.Test;
public class TestMySet {
@Test //测试往集合中添加一个新对象(元素)
public void t1(){
MySet set = new MySet();
set.add(100);
boolean boo = set.add("Java");
boolean boo2 = set.add("Java");
System.out.println(boo+","+boo2);
System.out.println(set.size());
}
@Test //测试读取集合中的所有元素
public void t2(){
MySet set = new MySet();
set.add(100);
set.add("Java");
set.add(new Date());
Object objs[] = set.getAll();
for(Object obj:objs){
System.out.println(obj);
}
}
}