容器的制作(Collation和Map)


1、定義一個類,類里面有一個屬性col,類型是集合類型Collection,實現下列方法:可以向col里面添加數據、修改數據、查詢數據、刪除數據。也就是把這個col當作一個數據存儲的容器,對其實現數據的增刪改查的方法。(因為涉及到集合就必須要考慮泛型,我這里都用了Object類型,所以這里是不夠完善的).

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class MyCollection {
//根據工程需要,下面的實現可以選擇不同的集合類如:List(ArrayList,LinkedList),Set(HashSet,TreeSet)
private Collection col = new ArrayList();

//增
public boolean add(Object obj){
return col.add(obj);
}

//刪
public boolean delete(Object obj){
return col.remove(obj);
}

//改
public boolean update(Object oldObj, Object newObj){
Object objs[] = col.toArray();
col.clear();
boolean boo=false;
for(int i=0;i<objs.length;i++){
if(objs[i].equals(oldObj)){
col.add(newObj);//替換
boo = true;
}else{
col.add(objs[i]);//照搬
}
}
return boo;
}

//查(全,單,條件)
public Collection getAll(){
return col;
}

public Collection getByCondition(String str){
Collection resCol = new ArrayList();
Iterator it = col.iterator(); //用迭代器遍歷
while(it.hasNext()){
Object obj = it.next();
if(obj.toString().indexOf(str)>=0){ //符合查找條件
resCol.add(obj);
}
}
return resCol;
}

}
public class Person{private String name;private int age;private String addr;public Person(String name, int age, String addr) {super();this.name = name;this.age = age;this.addr = addr;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getAddr() {return addr;}public void setAddr(String addr) {this.addr = addr;}@Overridepublic String toString() {return name + "," + age+","+addr;}}

下面進行容器的測試: 這使用的是Juit

        @Test
public void test3(){
MyCollection col = new MyCollection();
col.add("a111111");
col.add("a3223");
col.add("a5454451");
col.add("freerer111");
col.add( new Person("Jack",22,"湖南"));
col.add( new Person("小李",22,"武俠"));
col.add( new Person("張三",22,"天涯"));
//用迭代器遍歷
Collection colAll = col.getByCondition("a"); //查出所有帶'a'的元素
Iterator it = colAll.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}

2、把上題的Collection改成使用Map實現。其實差不多,只是涉及到Map中的鍵值對<key,value>問題 附代碼如下:
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class MyMap {
//根據工程需要,下面的實現可以選擇不同的集合類如:HashMap, TreeMap
private Map map = new HashMap();

//增,改
public Object put(Object key, Object value){
return map.put(key,value); //返回被替換的對象即對象
}

//刪
/**
* @param key 被移除對象的鍵值
* @return 返回被移除的對象
*/
public Object delete(Object key){
return map.remove(key);//返回被移除的對象
}

//改--本方法可以不要,直接和"增"合並
public Object update(Object key, Object newObj){
return map.put(key, newObj);
}

//查(全,單,條件)
public Map getAll(){
return map;
}

public Map getByCondition(String str){
Map resMap = new HashMap();
Set set = map.entrySet();
Iterator it = set.iterator();
while(it.hasNext()){
Entry en =(Entry) it.next();
if(en.getValue().toString().indexOf(str)>=0){
resMap.put(en.getKey(), en.getValue());
}
}
return resMap;
}

}
下面進行測試:
  @Test
public void test(){
Map map = new HashMap();
map.put("1","a111111");
map.put("2","a3223");
map.put("a1","a5454451");
map.put("ww","freerer111");
map.put("qq", new Person("Jack",22,"湖南"));
map.put(1, new Person("小李",22,"武俠"));
map.put(23.1, new Person("張三",22,"天涯"));

//增強for循環只能讀不能改
for( Object obj: map.entrySet() ){
Entry en = (Entry)obj;
System.out.println(en.getKey()+":"+en.getValue()); //將所有的信息輸出
}
}







注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com