针对集合操作的工具类
sort(List l):将指定的列表按升序排序
reverse(List l):反转指定列表中元素的顺序
shuffle(List l):使用默认的随机源随机排列指定的列表

统计字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package Map集合.统计字符串的数量;

import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;

public class CollectionChar {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个字符串");
String line=sc.nextLine();
//TreeSet排序
HashMap<Character, Integer> hm=new HashMap<Character, Integer>();
//遍历字符串
for(int i=0;i<line.length();i++) {
char key=line.charAt(i);
//取得key去找HashMap中找值
Integer value=hm.get(key);
//如果不存在就记为1,存在就+1并且重新存储
if(value==null) {
hm.put(key, 1);
}else {
value++;
hm.put(key, value);
}
}
//遍历HashMap集合,得到键和值
StringBuilder sb=new StringBuilder();
Set<Character> keyset=hm.keySet();
for(Character key:keyset) {
Integer value=hm.get(key);
sb.append(key).append("(").append(value).append(")");
}

System.out.println(sb.toString());
}

}

模拟斗地主

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package Map集合.斗地主;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;

public class PokerDemo {

public static void main(String[] args) {
// TODO Auto-generated method stub
//创建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里面存储编号,并且存储对应编号,同时往ArrayLiat里面存储编号
int index=0;
for(String number:numbers) {
for(String color:colors) {
hm.put(index, color+number);
array.add(index);
index++;
}
}
hm.put(index, "小王");
array.add(index);
index++;
hm.put(index, "小王");
array.add(index);
//洗牌(洗的是编号)
Collections.shuffle(array);
//发牌(发的也是编号,为了保证编号是排序的,采用TreeSet接受
TreeSet<Integer> t1=new TreeSet<Integer>();
TreeSet<Integer> t2=new TreeSet<Integer>();
TreeSet<Integer> t3=new TreeSet<Integer>();
TreeSet<Integer> dipai=new TreeSet<Integer>();
for(int i=0;i<array.size();i++) {
int x=array.get(i);
if(i>=array.size()-3) {
dipai.add(x);
}else if(i % 3==0) {
t1.add(i);
}
else if(i % 3==1) {
t2.add(i);
}
else if(i % 3==2) {
t3.add(i);
}
}
lookPoker("张三1", t1, hm);
lookPoker("张三2", t2, hm);
lookPoker("张三3", t3, hm);
lookPoker("底牌", dipai, hm);
}
public static void lookPoker(String name,TreeSet<Integer> ts,HashMap<Integer, String> hs) {
System.out.print(name+"的牌是:");
for(Integer key:ts) {
String poker=hs.get(key);
System.out.print(poker+" ");
}
System.out.println();
}
}