Appearance
Collections 概述
Collections (类)是仅由静态方法组合或返回集合,它包含对集合进行操作的多态算法
Collections 类的常用方法
方法名 | 说明 |
---|---|
public static <T extends Comparable<? super T>> void sort(List<T> list) | 对指定的列表升序排序 |
public static void reverse(List<?> list) | 反转指定列表中元素的顺序 |
public static void shuffle(List<?> list) | 使用默认的随机源随机排列指定的列表 |
java
List<Integer> list=new ArrayList<Integer>();
list.add(2);
list.add(1);
list.add(4);
list.add(3);
//void sort(List<T> list) 对指定的列表升序排序
//Collections.sort(list); //[1, 2, 3, 4]
//void reverse(List<?> list) 反转指定列表中元素的顺序
//Collections.reverse(list);// [3, 4, 1, 2]
//void shuffle(List<?> list) 使用默认的随机源随机排列指定的列表
Collections.shuffle(list);//[2, 4, 3, 1]
System.out.println(list);
2.模拟斗地主随机发牌
java
public static void main(String[] args) {
//创建ArrayList集合,存放扑克牌
ArrayList<String> arrayList = new ArrayList<String>();
//创建所有牌,并把每一张牌放入集合中
String[] flowers = {"♣", "♦", "♥", "♠"};
String[] numbers = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
//组合每一张牌
for (String number : numbers) {
for (String flower : flowers) {
arrayList.add(flower + number);
}
}
arrayList.add("大王");
arrayList.add("小王");
//打乱牌
Collections.shuffle(arrayList);
//发牌,遍历集合,分配给三个玩家
ArrayList<String> ZJSJ = new ArrayList<String>();
ArrayList<String> ZPP = new ArrayList<String>();
ArrayList<String> GS = new ArrayList<String>();
ArrayList<String> dp = new ArrayList<String>();
for (int i = 0; i < arrayList.size(); i++) {
String poker = arrayList.get(i);
if (i >= arrayList.size() - 3) {
dp.add(poker);
} else if (i % 3 == 0) {
ZJSJ.add(poker);
} else if (i % 3 == 1) {
ZPP.add(poker);
} else if (i % 3 == 2) {
GS.add(poker);
}
}
//看牌,遍历自己的牌
lookPoker("张嘉圣杰", ZJSJ);
lookPoker("张飘飘", ZPP);
lookPoker("郭少", GS);
lookPoker("底牌", dp);
}
public static void lookPoker(String name, ArrayList<String> arrayList) {
System.out.println(name + "的牌是");
for (String pokers : arrayList) {
String s = pokers;
System.out.print("\t" + pokers);
}
System.out.println();
}
/**
* 张嘉圣杰的牌是
* ♠3 ♥7 ♥Q ♥9 ♦6 ♣A ♣3 ♠8 ♣8 ♦10 ♣5 ♠5 ♠K ♦7 ♦J ♥6 ♥2
* 张飘飘的牌是
* ♥K ♣J ♣9 ♠A ♠J ♦9 ♦4 ♥4 ♦Q ♠6 ♠Q ♦8 ♣10 ♦5 ♣4 ♥3 大王
* 郭少的牌是
* ♠10 ♥5 ♦3 ♦2 ♠4 ♣6 ♠7 ♦K ♣K ♥8 ♥10 小王 ♣7 ♥A ♦A ♣Q ♣2
* 底牌的牌是
* ♥J ♠2 ♠9
* */
3.模拟斗地主随机发牌(将发好的牌排序)
java
public static void main(String[] args) {
//创建HashMap,键是编号,值是牌
HashMap<Integer, String> hashMap = new HashMap<Integer, String>();
//创建ArrayList存储编号
ArrayList<Integer> arrayList = new ArrayList<Integer>();
//创建花色数组和点数数组
String[] flowers = {"♣", "♦", "♥", "♠"};
String[] numbers = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
//从0开始向HashMap里存储编号,并存储对应的牌,同时向ArrayList里面存储编号
int index = 0;
for (String number : numbers) {
for (String flower : flowers) {
hashMap.put(index, flower + number);
arrayList.add(index);
index++;
}
}
hashMap.put(index, "大王");
arrayList.add(index);
index++;
hashMap.put(index, "小王");
arrayList.add(index);
//洗牌
Collections.shuffle(arrayList);
//发牌
TreeSet<Integer> ZJSJ = new TreeSet<Integer>();
TreeSet<Integer> ZPP = new TreeSet<Integer>();
TreeSet<Integer> GS = new TreeSet<Integer>();
TreeSet<Integer> DP = new TreeSet<Integer>();
for (int i = 0; i < arrayList.size(); i++) {
int index_number = arrayList.get(i);
if (i >= arrayList.size() - 3) {
DP.add(index_number);
} else if (i % 3 == 0) {
ZJSJ.add(index_number);
} else if (i % 3 == 1) {
ZPP.add(index_number);
} else if (i % 3 == 2) {
GS.add(index_number);
}
}
//看牌
lookPoker("张嘉圣杰", ZJSJ, hashMap);
lookPoker("张飘飘", ZPP, hashMap);
lookPoker("郭少", GS, hashMap);
lookPoker("底牌", DP, hashMap);
}
public static void lookPoker(String name, TreeSet<Integer> treeSet, HashMap<Integer, String> hashMap) {
System.out.println(name + "的牌是:");
for (Integer key : treeSet) {
String s = hashMap.get(key);
System.out.print("\t" + s);
}
System.out.println();
}
/**张嘉圣杰的牌是:
♥2 ♠3 ♣4 ♦4 ♣8 ♦9 ♠9 ♣10 ♥10 ♠10 ♥J ♠J ♦Q ♠Q ♠K 大王 小王
张飘飘的牌是:
♣2 ♥3 ♣5 ♦5 ♣6 ♦6 ♥6 ♠6 ♦7 ♥7 ♦8 ♠8 ♥9 ♦10 ♥Q ♥A ♠A
郭少的牌是:
♦2 ♠2 ♣3 ♦3 ♥4 ♠4 ♥5 ♠5 ♠7 ♥8 ♣9 ♣J ♦J ♣Q ♣K ♥K ♦A
底牌的牌是:
♣7 ♦K ♣A
*/