黑马程序员技术交流社区
标题:
求讲解一下题目
[打印本页]
作者:
铿锵的小黑马
时间:
2015-10-10 21:38
标题:
求讲解一下题目
请编写程序,完成集合嵌套,并遍历
传智播客
jc 基础班
张三 20
李四 22
jy 就业班
王五 21
赵六 23
作者:
奈何桥上升国旗
时间:
2015-10-10 21:38
传智播客
jc 基础班
张三 20
李四 22
jy 就业班
王五 21
赵六 23
class Student {
private String id;
private String name;
public Student() {
super();
}
public Student(String id, String name) {
super();
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
HashMap嵌套HashMap
public class HashMapTest {
public static void main(String[] args) {
// 1: 创建基础班集合 HashMap<String, String>
HashMap<String, String> base = new HashMap<String, String>();
// 2: 向基础班集合添加元素
base.put("01", "陈如水");
base.put("02", "左帅");
//3: 创建就业班集合 HashMap<String, String>
HashMap<String, String> job = new HashMap<String, String>();
//4: 向就业班集合添加元素
job.put("01", "李天成");
job.put("02", "许伟");
//5: 创建一个czbk集合 HashMap< String, HashMap<String, String> >
HashMap<String, HashMap<String, String>> czbk = new HashMap<String, HashMap<String, String>>();
//6: 向czbk集合中 添加班级元素
czbk.put("基础班", base);
czbk.put("就业班", job);
//7: 遍历
//遍历学校集合, 得到每一个班级
Set<Entry<String, HashMap<String, String>>> classes = czbk.entrySet();
// 得到每一个班级
for (Entry<String, HashMap<String, String>> clazz : classes) {
//获取班级名称
String name = clazz.getKey();
System.out.println(name);
//获取班级元素
HashMap<String, String> students = clazz.getValue();
//获取到每一个学生信息
Set<Entry<String, String>> studentSet = students.entrySet();
for (Entry<String, String> student : studentSet) {
//获取学生的学号
String id = student.getKey();
//获取学生的姓名
String n = student.getValue();
System.out.println("\t"+id+"..."+n);
}
}
}
}
HashMap嵌套ArrayList
public class HashMapTest {
public static void main(String[] args) {
//1: 创建基础班集合 ArrayList<Student>
ArrayList<Student> base = new ArrayList<Student>();
//2: 向基础班集合添加元素
base.add(new Student("01","陈如水"));
base.add(new Student("02","左帅"));
//3: 创建就业班集合 ArrayList<Student>
ArrayList<Student> job = new ArrayList<Student>();
//4: 向就业班集合添加元素
job.add(new Student("01","李天成"));
job.add(new Student("02","许伟"));
//5: 创建czbk学校集合 HashMap<String, ArrayList<Student> >
HashMap<String, ArrayList<Student>> czbk = new HashMap<String, ArrayList<Student>>();
//6: 把班级添加到 学校集合中
czbk.put("基础班", base);
czbk.put("就业班", job);
//7: 遍历
//获取到所有班级的名称
Set<String> classNames = czbk.keySet();
//获取到每一个班级名称
for (String className : classNames) {
System.out.println(className);
//通过班级名称,获取到班级学生信息
ArrayList<Student> Students = czbk.get(className);
//获取到每一个学生信息
for(Student s : Students){
System.out.println("\t"+s.getId()+"..."+s.getName());
}
}
}
}
ArrayList嵌套HashMap
public class ArrayListTest {
public static void main(String[] args) {
// 1: 创建基础班集合 HashMap<String, String>
HashMap<String, String> base = new HashMap<String, String>();
// 2: 向基础班集合添加元素
base.put("01", "陈如水");
base.put("02", "左帅");
//3: 创建就业班集合 HashMap<String, String>
HashMap<String, String> job = new HashMap<String, String>();
//4: 向就业班集合添加元素
job.put("01", "李天成");
job.put("02", "许伟");
//5:创建一个czbk集合 ArrayList<HashMap<String, String> >
ArrayList<HashMap<String, String> > czbk = new ArrayList<HashMap<String, String>>();
//6: 向czbk集合中 添加班级元素
czbk.add(base);
czbk.add(job);
//7: 遍历(难点)
//获取到每一个班级
for (HashMap<String, String> clazz : czbk) {
//获取到班级的所有学生
Set<Entry<String, String>> students = clazz.entrySet();
//获取到每一个学生
for (Entry<String, String> student : students) {
String id = student.getKey();
String name = student.getValue();
System.out.println(id +"--"+name );
}
}
}
}
5、请编写程序,完成模拟斗地主案例
public class PokerDemo {
public static void main(String[] args) {
// 创建一个HashMap集合
HashMap<Integer, String> hm = new HashMap<Integer, String>();
// 创建一个ArrayList集合
ArrayList<Integer> array = new ArrayList<Integer>();
// 创建花色数组和点数数组
// 定义一个花色数组
String[] colors = { "♠", "♥", "♣", "♦" };
// 定义一个点数数组
String[] numbers = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q",
"K", "A", "2", };
// 从0开始往HashMap里面存储编号,并存储对应的牌,同时往ArrayList里面存储编号即可。
int index = 0;
for (String number : numbers) {
for (String color : colors) {
String poker = color.concat(number);
hm.put(index, poker);
array.add(index);
index++;
}
}
hm.put(index, "小王");
array.add(index);
index++;
hm.put(index, "大王");
array.add(index);
// 洗牌(洗的是编号)
Collections.shuffle(array);
// 发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收)
TreeSet<Integer> sunQuan = new TreeSet<Integer>();
TreeSet<Integer> caoCao = new TreeSet<Integer>();
TreeSet<Integer> liuBei = new TreeSet<Integer>();
TreeSet<Integer> diPai = new TreeSet<Integer>();
for (int x = 0; x < array.size(); x++) {
if (x >= array.size() - 3) {
diPai.add(array.get(x));
} else if (x % 3 == 0) {
sunQuan.add(array.get(x));
} else if (x % 3 == 1) {
caoCao.add(array.get(x));
} else if (x % 3 == 2) {
liuBei.add(array.get(x));
}
}
// 看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)
lookPoker("孙权", sunQuan, hm);
lookPoker("曹操", caoCao, hm);
lookPoker("刘备", liuBei, hm);
lookPoker("底牌", diPai, hm);
}
// 写看牌的功能
public static void lookPoker(String name, TreeSet<Integer> ts,
HashMap<Integer, String> hm) {
System.out.print(name + "的牌是:");
for (Integer key : ts) {
String value = hm.get(key);
System.out.print(value + " ");
}
System.out.println();
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2