在抽奖、点名、拆盲盒时我们都需要随机实现某些功能。所以,我们可借助于Java中的随机数来进行相应模块的开发。
要求如下:
核心代码:
public static void test1(){
String[] namesArray = {"王小刚","李思思","杨倩倩","李大勇","姚期名","陶冰冰"};
int length = namesArray.length;
// 进行1次随机选择
Random random = new Random();
int number = random.nextInt(length);
String name = namesArray[number];
System.out.println("被选中的是:"+name);
}
测试结果:
要求如下:
核心代码:
ComparatorImpl类,代码如下:
import java.util.Comparator;
import java.util.Map;
/**
* 本文作者:谷哥的小弟
* 博客地址:http://blog.csdn.net/lfdfhl
*/
public class ComparatorImpl implements Comparator<Map.Entry<String, Integer>> {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
int result = o1.getValue()-o2.getValue();
return result;
}
}
测试方法,代码如下:
public static void test2(){
String[] namesArray = {"王小刚","李思思","杨倩倩","李大勇","姚期名","陶冰冰"};
int length = namesArray.length;
HashMap<String,Integer> hashMap = new HashMap<>();
// 随机进行10次选择
for (int i=0;i<10;i++){
Random random = new Random();
int number = random.nextInt(length);
String name = namesArray[number];
System.out.println("被选中的是:"+name);
Integer counter = hashMap.get(name);
if(counter==null){
hashMap.put(name,1);
}else{
hashMap.put(name,counter+1);
}
}
System.out.println("------------------------");
Set<Map.Entry<String, Integer>> entrySet = hashMap.entrySet();
Iterator<Map.Entry<String, Integer>> iterator = entrySet.iterator();
while(iterator.hasNext()){
Map.Entry<String, Integer> entry = iterator.next();
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key+"被选中"+value+"次");
}
System.out.println("------------------------");
//排序前对EntrySet进行遍历
List<Map.Entry<String, Integer>> list = new ArrayList<>(entrySet);
for (int i = 0; i < list.size(); i++) {
Map.Entry<String, Integer> entry = list.get(i);
System.out.println(entry);
}
System.out.println("------------------------");
// 利用comparator依据Value对EntrySet进行排序
ComparatorImpl comparator = new ComparatorImpl();
Collections.sort(list, comparator);
//排序后对EntrySet进行遍历
for (int i = 0; i < list.size(); i++) {
Map.Entry<String, Integer> entry = list.get(i);
System.out.println(entry);
}
System.out.println("------------------------");
// 获取出现次数最多的名字
int size = list.size();
Map.Entry<String, Integer> entry = list.get(size - 1);
String name = entry.getKey();
System.out.println(name);
}
测试结果:
要求如下:
核心代码:
略
要求如下:
核心代码:
略