java模拟洗牌、发牌、看牌(有序、无序)
-
1.查询一个字符串中字符出现的次数
-
2.洗牌、发牌、看牌无序
-
3.洗牌、发牌、看牌有序
-
Comparable是排序接口,若一个类实现了Comparable接口,就意味着“该类支持排序”。
-
而Comparator是比较器,我们若需要控制某个类的次序,可以建立一个“该类的比较器”来进行排序。
-
Comparable相当于“内部比较器”,而Comparator相当于“外部比较器”。
-
两种方法各有优劣, 用Comparable 简单, 只要实现Comparable 接口的对象直接就成为一个可以比较的对象,
-
但是需要修改源代码。
-
用Comparator 的好处是不需要修改源代码, 而是另外实现一个比较器,
-
当某个自定义的对象需要作比较的时候,把比较器和对象一起传递过去就可以比大小了,
-
并且在Comparator 里面用户可以自己实现复杂的可以通用的逻辑,使其可以匹配一些比较简单的对象,
-
那样就可以节省很多重复劳动了。
-
TreeSet的特点:1.排重(即元素不重复);
-
2.无序(即元素不会按照添加的顺序来显示);
-
3.无索引(即无类似于数组的角标);
-
4.排序(默认按照升序排序,且是按照ASCII顺序进行排序)
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;
/*
* 需求:统计字符串中每个字符出现的次数
*
* 模拟斗地主洗牌和发牌,牌没有排序
*/
public class MapTest {
public static void main(String[] args) {
// demo1();
// demo2();
demo3();
}
private static void demo3() {
String[] num = {
"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
String[] color = {
"红桃","黑桃","方片","梅花"};
HashMap<Integer,String> hm = new HashMap<>();
ArrayList<Integer> list = new ArrayList<>();
int index = 0;
//洗牌
for (String n : num) {
for (String c : color) {
hm.put(index, c.concat(n))