自己写的
import java.util.*;
public class Demo01 {
public static void main(String[] args) {
List<String> style = List.of("♣", "♥", "♠", "♦");
List<String> num = List.of("3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2");
List<Integer> Index = new ArrayList<>();
Map<Integer, String> card1 = new HashMap<>();
int a = 0;
for (int i = 0; i < num.size(); i++) {
for (int i1 = 0; i1 < style.size(); i1++) {
a += 1;
card1.put(a, style.get(i1) + num.get(i));
Index.add(a);
}
}
card1.put(++a, "小王");
Index.add(a);
card1.put(++a, "大王");
Index.add(a);
System.out.println(card1);
System.out.println(Index);
Collections.shuffle(Index);
Map<Integer, String> one = new HashMap<>();
List<Integer> oneIndex = new ArrayList<>();
Map<Integer, String> two = new HashMap<>();
List<Integer> twoIndex = new ArrayList<>();
Map<Integer, String> three = new HashMap<>();
List<Integer> threeIndex = new ArrayList<>();
ArrayList<String> left = new ArrayList<>();
for (int i = 0; i < Index.size(); i++) {
if (i < Index.size() - 3) {
if (i % 3 == 0) {
one.put(Index.get(i), card1.get(Index.get(i)));
oneIndex.add(Index.get(i));
} else if (i % 3 == 1) {
two.put(Index.get(i), card1.get(Index.get(i)));
twoIndex.add(Index.get(i));
} else {
three.put(Index.get(i), card1.get(Index.get(i)));
threeIndex.add(Index.get(i));
}
} else {
left.add(card1.get(Index.get(i)));
}
}
System.out.println(one);
System.out.println(two);
System.out.println(three);
System.out.println(left);
Collections.sort(oneIndex);
Collections.sort(twoIndex);
Collections.sort(threeIndex);
List<String> onenew = new ArrayList<>();
List<String> twonew = new ArrayList<>();
List<String> threenew = new ArrayList<>();
for (int i = 0; i < oneIndex.size(); i++) {
onenew.add(one.get(oneIndex.get(i)));
}
for (int i = 0; i < twoIndex.size(); i++) {
twonew.add(two.get(twoIndex.get(i)));
}
for (int i = 0; i < threeIndex.size(); i++) {
threenew.add(three.get(threeIndex.get(i)));
}
System.out.println(onenew);
System.out.println(twonew);
System.out.println(threenew);
System.out.println(left);
}
}
反思:不应该把思想极限在对Map牌本身进行操作,应该先针对Map牌映射的List序列进行操作,再把对操作后的List映射回Map牌中
import java.util.*;
public class Demopoke {
public static void main(String[] args) {
List<String> num = List.of("3","4","5","6","7","8","9","10","j","Q","K","A","2");
List<String> style = List.of("♥","♦","♣","♠");
Map<Integer,String> card = new HashMap<>();
List<Integer> num2 = new ArrayList<>();
int a= 1;
for (int i = 0; i <num.size(); i++) {
for (int j = 0; j <style.size(); j++) {
card.put(a,style.get(j)+num.get(i));
num2.add(a);
a++;
}
}
card.put(a,"小王");
num2.add(a++);
card.put(a,"大王");
num2.add(a);
Collections.shuffle(num2);
List<Integer> play1 = new ArrayList<>();
List<Integer> play2 = new ArrayList<>();
List<Integer> play3 = new ArrayList<>();
for (int i = 0; i <num2.size(); i++) {
if (i%3==0){
play1.add(num2.get(i));
}else if (i%3==1){
play2.add(num2.get(i));
}else {
play3.add(num2.get(i));
}
}
Collections.sort(play1);
Collections.sort(play2);
Collections.sort(play3);
lookpoke(play1,card);
lookpoke(play2,card);
lookpoke(play3,card);
}
public static void lookpoke(List<Integer> play,Map<Integer,String> card){
ArrayList<String> card1= new ArrayList<>();
for (Integer i : play){
card1.add(card.get(i));
}
System.out.println(card1);
}
}
精髓不在用Map集合,而是“映射”,其实用不用Map<k,v>集合都可以
import java.util.*;
public class Demo {
public static void main(String[] args) {
List<String> num = List.of("3", "4", "5", "6", "7", "8", "9", "10", "j", "Q", "K", "A", "2");
List<String> style = List.of("♥", "♦", "♣", "♠");
/* Map<Integer,String> card = new HashMap<>();*/
List<String> card = new ArrayList<>();
List<Integer> num2 = new ArrayList<>();
int a = 0;
for (int i = 0; i < num.size(); i++) {
for (int j = 0; j < style.size(); j++) {
card.add(style.get(j) + num.get(i));
num2.add(a);
a++;
}
}
card.add("小王");
num2.add(a++);
card.add("大王");
num2.add(a);
Collections.shuffle(num2);
List<Integer> play1 = new ArrayList<>();
List<Integer> play2 = new ArrayList<>();
List<Integer> play3 = new ArrayList<>();
List<Integer> left = new ArrayList<>();
for (int i = 0; i < num2.size(); i++) {
if (i < 51) {
if (i % 3 == 0) {
play1.add(num2.get(i));
} else if (i % 3 == 1) {
play2.add(num2.get(i));
} else {
play3.add(num2.get(i));
}
} else {
left.add(num2.get(i));
}
}
Collections.sort(play1);
Collections.sort(play2);
Collections.sort(play3);
Collections.sort(left);
lookpoke(play1, card);
lookpoke(play2, card);
lookpoke(play3, card);
}
public static void lookpoke(List<Integer> play, List<String> card) {
ArrayList<String> playcard = new ArrayList<>();
for (Integer i : play) {
playcard.add(card.get(i));
}
System.out.println(playcard);
}
}