package T07_集合嵌套练习;
import java.util.ArrayList;
import java.util.HashMap;
public class D1_List嵌套List {
/*
需求:有两个队伍的姓名需要存储,不能存储到同一个集合里。
第一个队伍: 罗志祥 陈羽凡 文章 陈赫
第二个队伍: 马蓉 白百何 李小璐 蔡徐坤
*/
public static void main(String[] args) {
创建第一个集合 存储 罗志祥 陈羽凡 文章 陈赫
ArrayList s1 = new ArrayList<>();
s1.add(“罗志祥”);
s1.add(“陈羽凡”);
s1.add(“文章”);
s1.add(“陈赫”);
//创建第二个集合存储 马蓉 白百何 李小璐 蔡徐坤
ArrayList<String> s2 = new ArrayList<>();
s2.add("马蓉");
s2.add("白百何");
s2.add("李小璐");
s2.add("蔡徐坤");
//创建第三个集合用于存储两队人马
ArrayList<ArrayList<String>> s3 = new ArrayList<>();
s3.add(s1);
s3.add(s2);
//遍历第三个大集合,打印所有人
for (ArrayList<String> strings : s3) {
for (String string : strings) {
System.out.println(string);
}
}
}
}
package T07_集合嵌套练习;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;
public class D2_List嵌套Map {
/*
需求:有两个队伍的姓名需要保存,每一个都是丈夫和夫妻的一一对应的关系。
第一个队伍:罗志祥-蝴蝶 陈羽凡-白百何 文章-姚笛
第二个队伍:令狐冲-小尼姑 张无忌-赵敏 郭靖-黄蓉
*/
public static void main(String[] args) {
//创建第一个HashMap集合存 罗志祥-蝴蝶 陈羽凡-白百何 文章-姚笛
HashMap<String, String> s1 = new HashMap<>();
s1.put(“罗志祥”,“蝴蝶”);
s1.put(“陈羽凡”,“白百何”);
s1.put(“文章”,“姚笛”);
//创建第二个HashMap集合存 令狐冲-小尼姑 张无忌-赵敏 郭靖-黄蓉
HashMap<String, String> s2 = new HashMap<>();
s1.put("令狐冲","小尼姑");
s1.put("张无忌","赵敏");
s1.put("郭靖","黄蓉");
//创建一个List集合,把前面两个map集合添加进去
// HashMap<HashMap<String, String>> s3 = new HashMap<>(); //错误演示
ArrayList<HashMap<String,String>> s3 = new ArrayList<>();
//添加
s3.add(s1);
s3.add(s2);
//先遍历list集合,再遍历里面的Map,打印所有的夫妻对
for (HashMap<String, String> s4 : s3) {
Set<String> set = s4.keySet();
for (String s : set) {
String s5 = s4.get(s);
System.out.println(s+"..."+s5);
}
}
}
}
package T07_集合嵌套练习;
import java.util.HashMap;
import java.util.Set;
public class D3_Map嵌套Map {
/*
需求:有两个队伍的姓名需要保存,每一个都是丈夫和夫妻的一一对应的关系,并且要记录每个队伍的队名。
第一个队伍(现代队):罗志祥-蝴蝶 陈羽凡-白百何 文章-姚笛
第二个队伍(古代队):令狐冲-小尼姑 张无忌-赵敏 郭靖-黄蓉
*/
public static void main(String[] args) {
//创建第一个HashMap集合存 罗志祥-蝴蝶 陈羽凡-白百何 文章-姚笛
HashMap<String, String> s1 = new HashMap<>();
s1.put(“罗志祥”,“蝴蝶”);
s1.put(“陈羽凡”,“白百何”);
s1.put(“文章”,“姚笛”);
//创建第二个HashMap集合存 令狐冲-小尼姑 张无忌-赵敏 郭靖-黄蓉
HashMap<String, String> s2= new HashMap<>();
s2.put("令狐冲","小尼姑");
s2.put("张无忌","赵敏");
s2.put("郭靖","黄蓉");
//创建第三个HashMap集合保存两个集合以及他们的队名
HashMap<String,HashMap<String,String>> map = new HashMap<>();//与上题的区别在于添加了String"队名"!注意格式
//添加
map.put("现代队",s1);
map.put("古代队",s2);
//遍历这个嵌套的集合。因为是两层map集合,所以需要两次keySet()
Set<String> names = map.keySet();
for (String name : names) {
System.out.println(name);
//根据队名获取到相应的map集合
HashMap<String, String> map1 = map.get(name);
Set<String> map2 = map1.keySet();
for (String map3 : map2) {
// String s4 = map1.get(map3);
// System.out.println(map3+".."+s4);
System.out.println(map3 + "..." + map1.get(map3));
}
}
}
}
package com.wuhuqifei_07;
import java.util.ArrayList;
import java.util.Collections;
public class PokerDemo01 {
public static void main(String[] args) {
//创建一个牌盒,也就是定义一个集合对象,用ArrayList集合实现
ArrayList<String> array = new ArrayList<String>();
//往牌盒里面装牌
/*
2,3,4...K,A
2,...
2,...
2,...
小王,大王
*/
//定义花色数组
String[] colors = {"♦", "♣", "♠", "♥"};
//定义点数数组
String[] numbers = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
for (String color : colors) {
for (String number : numbers) {
array.add(color + number);
}
}
array.add("小王");
array.add("大王");
//洗牌,也就是把牌打撒,用Collections的shuffle()方法实现
Collections.shuffle(array);
// System.out.println(array);
//发牌,也就是遍历集合,给三个玩家发牌
ArrayList<String> lqxArray = new ArrayList<String>();
ArrayList<String> lyArray = new ArrayList<String>();
ArrayList<String> fqyArray = new ArrayList<String>();
ArrayList<String> dpArray = new ArrayList<String>();
for (int i = 0; i < array.size(); i++) {
String poker = array.get(i);
if (i >= array.size() - 3) {
dpArray.add(poker);
} else if (i % 3 == 0) {
lqxArray.add(poker);
} else if (i % 3 == 1) {
lyArray.add(poker);
} else if (i % 3 == 2) {
fqyArray.add(poker);
}
}
//看牌,也就是三个玩家分别遍历自己的牌
lookPoker("张三", lqxArray);
lookPoker("李四", lyArray);
lookPoker("王五", fqyArray);
lookPoker("底牌", dpArray);
}
//看牌的方法
public static void lookPoker(String name, ArrayList<String> array) {
System.out.print(name + "的牌是:");
for (String poker : array) {
System.out.print(poker + " ");
}
System.out.println();
}
}
一、现在有一个map集合如下:
Map<Integer,String> map = new HashMap<Integer, String>();
map.put(1, “张三丰”);
map.put(2, “周芷若”);
map.put(3, “汪峰”);
map.put(4, “灭绝师太”);
要求:
1.遍历集合,并将序号与对应人名打印。
2.向该map集合中插入一个编码为5姓名为李晓红的信息
3.移除该map中的编号为1的信息
4.将map集合中编号为2的姓名信息修改为"周林"
public static void main(String[] args) {
// 1.定义HashMap,编号作为key,姓名作为value
Map<Integer,String> map = new HashMap<Integer, String>();
// 2.使用put方法添加元素
map.put(1, "张三丰");
map.put(2, "周芷若");
map.put(3, "汪峰");
map.put(4, "灭绝师太");
// 3.使用keySet+增强for迭代map中的元素,并打印
Set<Integer> keySet = map.keySet();
for (Integer key : keySet) {
String value = map.get(key);
System.out.println(key + " -- "+ value);
}
// 4.使用put向该map集合中插入一个编码为5姓名为李晓红的信息
map.put(5, "李晓红");
// 5.使用remove移除该map中的编号为1的信息
map.remove(1);
// 6.使用put将map集合中编号为2的姓名信息修改为"周林"
map.put(2, "周林");
System.out.println(map);
}
二、 分析以下需求,并用代码实现
- 统计每个单词出现的次数
- 有如下字符串"If you want to change your fate I think you must come to the dark horse to learn java"(用空格间隔)
- 打印格式:
to=3
think=1
you=2
public class Task02 {
public static void main(String[] args) {
String s = “If you want to change your fate I think you must come to the dark horse to learn java”;
String[] arr = s.split(" ");
Map<String, Integer> map = new HashMap<>();
for (String s1 : arr) {
map.put(s1, map.containsKey(s1) ? map.get(s1) + 1 : 1);
}
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + "=" + entry.getValue());
}
}
}
/*
-
3.1. 产生10个1-20之间的随机数要求随机数不能重复
*/
public class Test01 {
public static void main(String[] args) {
//创建set集合
HashSet hs = new HashSet<>();//循环添加元素 while (hs.size() < 10) { Random r = new Random(); int num = r.nextInt(20) + 1; hs.add(num);//自动装箱 } //打印结果 System.out.println(hs);
}
}
/*
3.2.产生10个长度为10的不能重复的字符串(里面只能出现大写字母、小写字母、0-9的数字),并遍历打印输出
*/
public class Test02 {
public static void main(String[] args) {
HashSet<String> hs = new HashSet<>();
Random r = new Random();
while (hs.size() < 11) {
// 获取字符串,内容为大写字母+小写字母+数字
StringBuilder sb = new StringBuilder();
for (int i = 0; i <= 9; i++) {
sb.append(i);
}
for (char i = 'a'; i <= 'z'; i++) {
sb.append(i);
}
for (char i = 'A'; i <= 'Z'; i++) {
sb.append(i);
}
String s = sb.toString();
// 循环产生长度为10的字符串
StringBuilder sb2 = new StringBuilder();
for (int i = 0; i < 10; i++) {
int random = r.nextInt(62);
sb2.append(s.charAt(random));
}
//存入集合中
hs.add(sb2.toString());
}
System.out.println(hs);
}
}
四、双色球规则:双色球每注投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1—33中选择;蓝色球号码从1—16中选择;请随机生成一注双色球号码。(要求同色号码不重复)
public class HashSetTest02 {
public static void main(String[] args) {
// 1.创建Random随机数对象
Random ran = new Random();
// 2.创建HashSet用于保存不重复的红球
HashSet<Integer> hs = new HashSet<>();
// 3.死循环
while (true) {
// 4球数量小于6个就产生一个红球.添加到HashSet中
// 5.如果产生重复号码,往HashSet里添加不进去,所以会再次生成号码
int num = ran.nextInt(33) + 1;
hs.add(num);
//元素个数有6个就,退出循环
if (hs.size() == 6) {
break;
}
}
// 6.再生成一个篮球
int blueBall = ran.nextInt(16) + 1;
// 7.打印中奖号码
System.out.println("双色球中奖号码:");
System.out.print("红球是: ");
for (Integer redBall : hs) {
System.out.print(redBall + " ");
}
System.out.println();
System.out.println("蓝球是: " + blueBall);
}
}