一、Collections
今天呢学习了Collectins这个类,听起来是不是和Collection这个集合有点像呢?Collections是一个针对集合操作的一个工具类,可以对集合进行二分查找和排序,而Collection是单列集合的顶层接口,有子接口List和Set。
二、小练习
需求:模拟扑克牌游戏,写出代码实现随机发放扑克牌并排序输出
分析:
A创建HashMap集合存储扑克牌号以及扑克牌
B创建ArrayList集合存储扑克牌号
C创建扑克牌花色和点数数组
D将扑克牌号以及扑克牌放入HashMap集合中,并把扑克牌号放入ArrayList集合中
E洗牌(按照扑克牌号洗牌)
F发牌(按照扑克牌号发牌)
G看牌
实现:
public class pockGame {
public static void main(String[] args) {
//创建一个HashMap集合
HashMap<Integer,String> hm=new HashMap<Integer, String>();
//创建一个ArrayList集合来存放扑克牌编号
ArrayList<Integer> arr=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);//把扑克牌存放到HashMap集合中
arr.add(index);//把扑克牌编号存放到ArrayList集合中
index++;//每存放一个扑克牌HashMap的键增加1
}
}
//接下来把大小王存放到HashMap集合中,并把扑克牌的编号放入ArrayList集合中
hm.put(index, "小王");
arr.add(index);
index++;
hm.put(index, "大王");
arr.add(index);
//洗牌,洗的是扑克牌编号
Collections.shuffle(arr);
//发牌,TreeSet集合保证了编号有序
TreeSet<Integer> dizhu=new TreeSet<Integer>();
TreeSet<Integer> zhoubapi=new TreeSet<Integer>();
TreeSet<Integer> nongmin=new TreeSet<Integer>();
TreeSet<Integer> dipai=new TreeSet<Integer>();
for(int x=0;x<arr.size();x++){
if(x>=arr.size()-3){
dipai.add(arr.get(x));
}else if(x%3==0){
dizhu.add(arr.get(x));
}
else if(x%3==1){
zhoubapi.add(arr.get(x));
}else if(x%3==2){
nongmin.add(arr.get(x));
}
}
//看牌
lookPoker("地主", dizhu, hm);
lookPoker("周扒皮", zhoubapi, hm);
lookPoker("农民", nongmin, hm);
lookPoker("底牌", dipai, hm);
}
//实现看牌的功能,这里的name是玩家和底牌,ts是扑克牌的编号,hm用来获取扑克牌
public static void lookPoker(String name, TreeSet<Integer> ts, HashMap<Integer,String> hm){
System.out.println(name+"的牌是:");
for(Integer key:ts){//增强for实现扑克牌编号(键)的遍历
String value= hm.get(key);//通过扑克牌(键)获取扑克牌(值)
System.out.print(value +" ");//打印出获取的扑克牌(值)
}
System.out.println();
}
}
三、总结
上面的小练习运用了HashMap集合、ArrayList集合、普通数组、Collections类,其中Collections类的随机置换方法Collections.shuffle()是今天新学习的内容,这个方法主要就是用于体现随机性。通过这个小练习对最近学的东西进行一个总结归纳,以后也要经常复习才行啊!