随机生成器示例

/*
 *该程序演示随机生成任意数量的演员
 */
import java.util.*;
interface Generator<T> { public T next();}
class GuysMovie {  //电影演员
 private static long counter=0;
 private final long id=counter++;
 public String toString(){
  return getClass().getSimpleName()+"  "+id;
 }
}

class GoodGuysMovie extends GuysMovie {} //优秀演员分隔
class Chan extends GoodGuysMovie { }
class GiGi extends  GoodGuysMovie { }

class BadGuysMovie extends GuysMovie { }   //差演员分隔
class EdisonChen extends BadGuysMovie{ }
class GillianYanTungChung extends BadGuysMovie{ }


public class MakeGuysMovie implements Iterable<GuysMovie>,Generator<GuysMovie> {
 private int n;
 public MakeGuysMovie(int n){this.n=n;}
 private Class[] types={Chan.class,GiGi.class,EdisonChen.class,GillianYanTungChung.class};
 private Random rand=new Random(47);
 //实现Generator接口方法,为什么不直接在 MakeGuysMovie使用泛型呢?这是为了保持迭代一致。
 public GuysMovie next(){
  try{
   return (GuysMovie)(types[rand.nextInt(types.length)].newInstance());
  }catch(Exception e){
   throw new RuntimeException(e);
  }
 }
 //实现Iterable接口,方便使用for-each语句
 public Iterator<GuysMovie> iterator(){
  return new Iterator<GuysMovie>(){
   int count=MakeGuysMovie.this.n;
   public boolean hasNext(){ return count>0;}
   public  GuysMovie next(){
    count--;
    return MakeGuysMovie.this.next();
   }
   public void remove(){
    throw new UnsupportedOperationException();
   }
  };
 }
  
 public static void main(String[] args){
  for(GuysMovie guy: new MakeGuysMovie(10))  //随机生成10个演员
   System.out.println(guy);

 }
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值