轮询的方法


package cn.rand;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Random;

/**
* Feb 9, 2009
* version 1.1 *
*/

public class Test {
public static HashMap<String, String> map=new HashMap<String, String>();
/**
* 数据源
* @return
*/
public ArrayList<String> getDataList(){
ArrayList<String> al=new ArrayList<String>();
al.add("测试");
al.add("数据源");
al.add("随机数");
al.add("获取");
al.add("网页");
al.add("娱乐");
al.add("主题");
al.add("歌曲");
return al;
}

/**
* 获取不大于count的随机数
* @param count
* @return
*/
public int getStart(int count){
int result=0;
//进行取模(%)操作是为了防止随机数大于total
result=(int)(Math.round(Math.random()*count))%count;
return result;
}

/**
* 轮转,按顺序随机获取count个值
* @param count 要取个数,个数不足从头取
* @return
*/
public ArrayList<String> getScroll(int count){
ArrayList<String> result=new ArrayList<String>();
ArrayList<String> data=this.getDataList();
int total=data.size();
int begin=this.getStart(total);
System.out.println("begin:"+begin+":total:"+total);
int curCount=0;
for(int i=begin;i<total&&curCount<count;i++,curCount++){
result.add(data.get(i).toString());
}
//数量不足时从头开始取
for(int i=0;i<total&&curCount<count;i++,curCount++){
result.add(data.get(i).toString());
}

return result;
}

/**
* 轮转,随机获取某个数,使其每total次必显示一次 平均出现
* @return
*/
public ArrayList<String> getScroll2(){
ArrayList<String> result=new ArrayList<String>();
ArrayList<String> data=this.getDataList();
int total=data.size();
int begin=this.getStart(total);
int curCount=0;
String key="";
if(map.size()==total){
map.clear();
}
//只显示一个数据
for(int i=begin;i<total&&curCount<1;i++){
key=data.get(i).toString();
if(!map.containsKey(key)){
curCount++;
result.add(key);
map.put(key, key);
}
}
//没有数据时从头开始取
for(int i=0;i<total&&curCount<1;i++){
key=data.get(i).toString();
if(!map.containsKey(key)){
curCount++;
result.add(key);
map.put(key, key);
}
}
return result;
}


public static int begin3=0;
/**
* 轮询3,按顺序进行轮询
* @return
*/
public ArrayList getScroll3(int count){
ArrayList<String> result=new ArrayList<String>();
ArrayList<String> data=this.getDataList();

int total=data.size();
int curCount=0;
for(int i=begin3;i<total&&curCount<count;i++,curCount++){
result.add(data.get(i).toString());
}
//数量不足时从头开始取
for(int i=0;i<total&&curCount<count;i++,curCount++){
result.add(data.get(i).toString());
}
//设置下一次begin开始的位置
begin3+=count;
if(begin3>=total){
begin3=begin3-total;
}
return result;
}



/**
* 得到两个数之间的随机数(产生的结果不包括max)
* @param min
* @param max
* @return
*/
public static float getRandom(int min,int max){
float result = 0;
// Random random = new Random();
// result = (max-min)* random.nextFloat() + min;
//进行取模(%)操作是为了防止随机数大于max
result=(float)(Math.random()*max%max);
if(result<min) result+=min;
return result;
}



/**
* @param args
*/
public static void main(String[] args) {
Test test=new Test();
// ArrayList list=test.getScroll(1);
// for(int i=0;i<list.size();i++){
// System.out.println(list.get(i).toString());
// }
// for(int i=0;i<8;i++){
// ArrayList<String> list1=test.getScroll2();
// for(int j=0;j<list1.size();j++){
// System.out.println(i+":"+list1.get(j).toString());
// }
// }

for(int i=0;i<2;i++){
ArrayList<String> list1=test.getScroll3(3);
for(int j=0;j<list1.size();j++){
System.out.println(i+":"+list1.get(j).toString());
}
}


}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值