(十三)Set类实现以及彩票机选算法实现

Set类实现
//用户自定义的MySet类
public class MySet {

	private MyVector value = new MyVector();
	
	//添加对象
	public void add(Object obj)throws Exception
	{
		//不允许添加空对象
		if(obj==null)
		{
			return ;
		}
		//由于Set类不允许添加重复的元素,所有先查找该对象是否已经存在。
		if(value.indexOf(obj)<0)
		{
			value.add(obj);
		}
		else
		{
			return;
		}
	}
	
	//删除对象
	public void remove(Object obj)throws Exception
	{
		value.remove(obj);
	}
	
	//是否包含一个对象
	public boolean contain(Object obj)throws Exception
	{
		return value.contain(obj);
	}
	
	public int size()
	{
		return value.size();
	}
	
	public Object get(int index)throws Exception
	{
		return value.get(index);
	}
	
	//是否包含另一个集合对象.
    public boolean include(Object obj)throws Exception
    {
    	if( obj instanceof MySet)
    	{
    		MySet set = (MySet)obj;
    		int count=0;
    		while(count<set.size())
    		{
    			Object temp = set.get(count);
    			count++;
    			if(!contain(temp))
    				return false;
    		}
    		return true;
    	}
    	else
    	{
    		return false;
    	}
    }
    
    //判断两个集合是否相等
    public boolean equals(Object obj) 
    {
    	if(obj instanceof MySet)
    	{
    	   MySet set = (MySet)obj;
    	   try
    	   {
	    	   if(include(set)&&set.include(this))
	    	   {
	    		   return true;
	    	   }
	    	   else
	    		   return false;
    	   }
    	   catch(Exception ex)
    	   {
    		   ex.printStackTrace();
    		   return false;
    	   }
    	}
    	else
    	{
    		return false;
    	}
    }
   
    //判断集合是否为空
    public boolean isEmpty()
    {
    	return value.size()>0;
    }
	
    
    
}

public class Test {

	
	public static void main(String[] args)throws Exception {
		
		MySet set1 = new MySet();
		set1.add(new Integer(0));
		set1.add(new Integer(1));
		set1.add(new Integer(2));
		
		MySet set2 = new MySet();
		set2.add(new Integer(0));
		set2.add(new Integer(1));
		set2.add(new Integer(2));
		//set2.add(new Integer(3));
		//set2.add(new Integer(4));
		
		System.out.println(set1.size());
		set1.add(new Integer(2));//不能添加重复元素
		System.out.println(set1.size());
		set1.add(null);//不能添加空对象
		System.out.println(set1.size());
		
		System.out.println(set2.include(set1));
		System.out.println(set1.include(set2));
		System.out.println(set1.equals(set2));
	}

}

Java集合框架介绍
List:有序的,可以重复
Set:无序的,不能重复
Map:键值对的方式储存
Java集合框架应用
编写双色球号码机选生成算法。
双色球投注区分为红球号码区和蓝球号码区,红球号码范围为01~33,蓝球号码范围为01~16。双色球每期从33个红球中开出6个号码,从16个蓝球中开出1个号码作为中奖号码,双色球玩法即是竞猜开奖号码的6个红球号码和1个蓝球号码,顺序不限。
import java.util.Vector;


public class MyLotto {

	
	public static void main(String[] args) {
		
		Vector<Integer> v = new Vector<Integer>();
		
		//初始化红球号码
		for(int i=1;i<=33;i++)
		{
			v.add(i);
		}
		
		//随机生成六个红球
		for(int i=0;i<6;i++)
		{
			int len = v.size();
			int random = (int)(Math.random()*100)%len; 
			System.out.println("第"+(i+1)+"个红球号码是:"+v.get(random));
		    v.remove(random);//删除元素
		}
		
		//随机抽取篮球
		int num = (int)(Math.random()*100)%16;
		System.out.println("蓝球号码是:"+(num+1));
		
		
	}

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值