集合 MySet方法实现增删改查

1、定义一个类,类里面有一个属性col,类型是集合类型Collection,实现下列方法:可以向col里面添加数据、修改数据、查询数据、删除数据。也就是把

这个col当作一个数据存储的容器,对其实现数据的增删改查的方法。


package cn.hncu.MySet3;

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

public class CollectionSet<E> {
	private Collection<E> col=new ArrayList<E>();
	public boolean add(E e){
		return col.add(e);
	}
	public boolean update(E e1,E e2){//把e1改成e2
		Object objs[]=col.toArray();
		col.clear();//记得清除
		boolean flag=true;
		for(int i=0;i<objs.length;i++){
			@SuppressWarnings("unchecked")
			E e=(E) objs[i];
			if(e.equals(e1)){
				e=e2;
				flag=false;
			}
			col.add(e);
		}
		return flag;
	}
	public boolean delete(E e){
		return col.remove(e);
	}
	public Collection<E> index(E e){
		Collection<E> c=new ArrayList<E>();
		Iterator<E> it=col.iterator();
		while(it.hasNext()){
			Object obj=it.next();
			if(obj.toString().indexOf(e.toString())>=0){
				c.add(e);
			}
		}
		return c;
	}
	public Collection<E> getAll(){
		return col;
	}
}

package cn.hncu.MySet3;

import java.util.Iterator;

public class Test2 {

	public static void main(String[] args) {
		CollectionSet<String> set=new CollectionSet<String>();
		set.add("!!!");
		set.add("1");
		set.add("2");
		set.add("3");//可以重复
		set.add("3");
		set.add("3");
		set.add("3");
		set.update("1", "///\\))))");
		
		Iterator<String> it=set.getAll().iterator();//获得元素
		while(it.hasNext()){
			System.out.println(it.next());
		}
		
		System.out.println(set.index("3"));//
		Iterator<String> it2=set.index("2").iterator();//获得元素
		while(it2.hasNext()){
			System.out.println(it2.next());
		}
		
	}

}





2、把上题的Collection改成使用Map实现。

package cn.hncu.MySet3;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class MapSet<K,V> {
	private Map<K, V> map=new HashMap<K, V>();
	public boolean put(K key,V value){//用obj更能兼容类型,但是在这里,必须是K类型。这种也有改的功能
		map.put(key, value);
		return true;
	}
	public V delete(Object key) {
		return map.remove(key);
	}
	public Map<K, V> getAll(){
		return  map;
	}
	public Map<K, V> index(String valueStr){
		Map<K, V> m=new HashMap<K, V>();
		Iterator<Entry<K, V>> it=map.entrySet().iterator();
		while(it.hasNext()){
			Entry<K, V> entry=it.next();
			if(entry.getValue().toString().indexOf(valueStr)>=0){
				m.put(entry.getKey(), entry.getValue());
//				System.out.println("OK");
			}
		}
		return m;
	}
}


测试

package cn.hncu.MySet3;

import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class Test3 {

	public static void main(String[] args) {
		MapSet<Integer, String> set=new MapSet<Integer, String>();
		set.put(1, "100");
		set.put(3, "12");
		set.put(2, "lzp");
		set.put(6, "wja");
		set.put(7, "LLL");//这种是更改
		set.put(6, "LLL");//这种是更改
		
//		Iterator<Entry<Integer, String>> it=set.getAll().entrySet().iterator();//慢慢熟悉这种格式
//		while(it.hasNext()){
//			Entry<Integer, String> entry=it.next();
//			System.out.println(entry);
//		}
		Map<Integer, String>  m=set.index("LLL");
		Iterator<Entry<Integer, String>> it2=m.entrySet().iterator();
		while(it2.hasNext()){
			Entry<Integer, String> entry2=it2.next();
			System.out.println(entry2);
		}
		
	}

}



2 、把上题的 Collection 改成使用 Map 实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值