package com.Lucky.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
/*
自动点名器
要求: 班级里面存在N名学生,实现随机点名
*/
public class testOne {
public static void main(String[] args) {
//创建集合
ArrayList<String> str=new ArrayList<>();
str.add("李四");
str.add("王五"); //第一种方法添加
Collections.addAll(str,"唯易","张三"); //第二种方法添加
//创建随机数对象:方法1
Random random=new Random();
//随机点名
int res= random.nextInt(str.size());
System.out.println(str.get(res));
//方法二:Collections的shuffle()
Collections.shuffle(str);
String name= str.get(0);
System.out.println(name);
}
}
package com.Lucky.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
/*
练习2: 要求:
班级有N名学生,要实现随机点名的男生概率为70%,女生概率为30%
*/
public class testTwo {
public static void main(String[] args) {
//创建集合
ArrayList<Integer> list=new ArrayList();
Collections.addAll(list,1,1,1,1,1,1,1); //70%
Collections.addAll(list,0,0,0); //30%
Collections.shuffle(list); //每次运行都打乱顺序,保证随机原则
//遍历概率集合
Random rand=new Random();
int result=list.get(rand.nextInt(list.size())); //结果只能是0或1
System.out.println(result);
ArrayList<String> boy=new ArrayList();
Collections.addAll(boy,"唯易","文宇","中雨","任性","BUG","文书");
ArrayList<String> girl=new ArrayList();
Collections.addAll(girl,"小丽","小晓","晓雯");
//再用随机出来的0或1遍历对应男女集合
if (result==0){
System.out.println(girl.get(rand.nextInt(girl.size())));
}else {
System.out.println(boy.get(rand.nextInt(boy.size())));
}
}
}
package com.Lucky.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
/*
练习3: 要求:
班级有N名学生,被点到的学生不会再次被点名
直到所有学生都点完之后,重新开始第二轮点名
*/
public class testThree {
public static void main(String[] args) {
//创建
ArrayList<String> lis=new ArrayList();
Collections.addAll(lis,"唯易","文宇","中雨","任性","BUG","文书","小丽","小晓","晓雯");
//创建集合储存每次随机点名的学生数据
ArrayList<String> arr=new ArrayList<>();
//获取集合lis的长度
int len=lis.size();
Random random=new Random();
//遍历轮数:10
for (int i = 1; i <=10; i++) {
System.out.println("---第"+i+"轮-----");
//每一次循环抽取的过程
for (int j = 0; j < len; j++) {
int index= random.nextInt(lis.size());
System.out.println(lis.get(index));
arr.add(lis.get(index)); //临时集合添加数据
lis.remove(lis.get(index));//原来集合较少数据
}
//还原数据【遍历还原点】
lis.addAll(arr);
arr.clear();
}
}
}
package com.Lucky.test;
import java.util.*;
/**
* 要求:定义一个Map集合,键储存省份 ,值储存多个市
* 遍历结果格式: 广东省 = 广州,深圳,东莞,浙江,佛山
*/
public class testFive {
public static void main(String[] args) {
//定义一个map集合
HashMap<String,ArrayList<String>> map=new HashMap();
ArrayList<String> arr=new ArrayList<>();
Collections.addAll(arr,"广州","广州","东莞","浙江","佛山");
ArrayList<String> arr1=new ArrayList<>();
Collections.addAll(arr1,"桂林","贵州","西陵");
map.put("广东省",arr);
map.put("广西",arr1);
// 遍历结果格式: 广东省 = 广州,深圳,东莞,浙江,佛山
//方法一:
//遍历map集合
Set<Map.Entry<String, ArrayList<String>>> entries = map.entrySet();
for (Map.Entry<String, ArrayList<String>> entry : entries) {
StringBuilder builder=new StringBuilder();
for (String s : entry.getValue()) {
builder.append( s+",");
}
System.out.println(entry.getKey()+" ="+builder);
}
System.out.println("----------------------");
//方法二:
Set<String> strings = map.keySet();
strings.forEach(str-> {
/**
* 参数一:每一次添加数据的分割符
* 参数二:字符串开始的符号
* 参数三:字符串结尾的符号
*/
StringJoiner joiner = new StringJoiner(",","","");
ArrayList<String> temp=map.get(str);
for (String s : temp) {
joiner.add(s);
}
System.out.println(str+"="+joiner);
});
}
}