一、Collection系列集合的小结


二、补充知识:集合的并发修改异常问题



三、Collection的其他相关知识
1. 前置知识:可变参数


2. 集合的工具类:Collections






3. 综合案例:斗地主游戏

(1)创建Card类
public class Card {
private String number;
private String color;
private int size;
public Card() {
}
public Card(String number, String color, int size) {
this.number = number;
this.color = color;
this.size = size;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
@Override
public String toString() {
return color + number;
}
}
(2)创建房间类Room
public class Room {
private List<Card> allCards = new ArrayList<>();
public Room(){
String[] numbers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
String[] colors = {"♠","♥","♦","♣",};
int size = 0;
for (String number : numbers) {
size ++ ;
for (String color : colors) {
Card c = new Card(number, color, size);
allCards.add(c);
}
}
Card c1 = new Card("","🃏",++size);
Card c2 = new Card("","🤡", ++size);
Collections.addAll(allCards, c1, c2);
System.out.println("新牌"+allCards);
}
public void start() {
//1. 洗牌:allCards
Collections.shuffle(allCards);
System.out.println("洗牌后"+allCards);
//2. 发牌:定义三个玩家。
List<Card> LingHuchong = new ArrayList<>();
List<Card> JiuMozhi = new ArrayList<>();
List<Card> RenYingying = new ArrayList<>();
//正式发牌给三个玩家,每次发出51张牌,剩余3张牌作为底牌
for (int i = 0; i < allCards.size() - 3; i++) {
Card c = allCards.get(i);
if(i % 3 == 0){
LingHuchong.add(c);
}else if(i % 3 == 1){
JiuMozhi.add(c);
}else if(i % 3 == 2){
RenYingying.add(c);
}
}
//3. 对3个玩家的牌进行排序
sortCards(LingHuchong);
sortCards(JiuMozhi);
sortCards(RenYingying);
//4. 看牌
System.out.println("阿冲:"+LingHuchong);
System.out.println("阿鸠:"+JiuMozhi);
System.out.println("盈盈:"+ RenYingying);
List<Card> LastThreeCards = allCards.subList(allCards.size()-3, allCards.size());
System.out.println("底牌:" + LastThreeCards);
//抢到地主的展示
JiuMozhi.addAll(LastThreeCards);
sortCards(JiuMozhi);//抢到地主之后的牌进行排序
System.out.println("阿鸠抢到地主后:"+JiuMozhi);
}
private void sortCards(List<Card> cards) {
Collections.sort(cards, new Comparator<Card>() {
@Override
public int compare(Card o1, Card o2) {
return o1.getSize() - o2.getSize();// 升序排序
return o2.getSize() - o1.getSize();//降序排序
}
});
}
}
(3)创建游戏测试类 GameDemo
public class GameDemo {
public static void main(String[] args) {
Room m = new Room();
m.start();
}
}
(4)运行结果
