版权声明
作者:谷哥的小弟作者博客地址:/lfdfhl背景概述
在抽奖、点名、拆盲盒时我们都需要随机实现某些功能。所以,我们可借助于Java中的随机数来进行相应模块的开发。
第一版
要求如下:
1、数组中存放名字2、随机从数组中选择1个名字
核心代码:
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);}
测试结果:
第二版
要求如下:
1、数组中存放名字2、随机从数组中选择10个名字3、请输出出现次数最多的名字
核心代码:
ComparatorImpl类,代码如下:
import parator;import java.util.Map;/*** 本文作者:谷哥的小弟* 博客地址:/lfdfhl*/public class ComparatorImpl implements Comparator<Map.Entry<String, Integer>> {@Overridepublic 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);}
测试结果:
第三版
要求如下:
1、在本地txt文件中存放多个名字2、请随机选择10个名字3、请输出出现次数最多的名字
核心代码:
略
第四版
要求如下:
1、在本地Excel文件中存放多个名字2、请随机选择10个名字3、请输出出现次数最多的名字
核心代码:
略