目录

  1. Collections类概述
  2. 用Collections类的sort()方法对ArrayList集合元素排序
  3. 模拟斗地主过程中的洗牌,发牌和看牌
  4. 模拟斗地主升级版

1. Collections类概述

Collections类的概述

  • 是针对集合操作的工具类
Collections类的常用方法
  • public static <T extends Comparable <? super T>> void sort(List list):将指定的列表按升序排序
  • public static void reverse (List<?> list):反转指定列表中元素的顺序
  • public static void shuffle (List<?> list):使用默认的随机源随机排列指定的列表
package collection;import java.util.ArrayList;
import java.util.Collections;
import java.util.List;public class CollectionsTest {public static void main(String[] args) {List<Integer> list = new ArrayList<>();list.add(30);list.add(20);list.add(50);list.add(10);list.add(40);Collections.sort(list);  //[10, 20, 30, 40, 50]System.out.println("sort:"+list);Collections.reverse(list);System.out.println("reverse:"+list);Collections.shuffle(list);System.out.println("shuffle:"+list);}
}

运行结果为

sort:[10, 20, 30, 40, 50]
reverse:[50, 40, 30, 20, 10]
shuffle:[10, 50, 20, 30, 40]

2. 用Collections类对ArrayList集合元素排序

package collection;import java.util.*;public class CollectionsTest {public static void main(String[] args) {sortArrayList();}public static void sortArrayList(){ArrayList<Mentor> list = new ArrayList<>();Mentor m1 = new Mentor("damo",30);Mentor m2 = new Mentor("lixin",20);Mentor m3 = new Mentor("laofuzi",100);Mentor m4 = new Mentor("huamulan",30);list.add(m1);list.add(m2);list.add(m3);list.add(m4);Collections.sort(list, new Comparator<Mentor>() {@Overridepublic int compare(Mentor m1, Mentor m2) {int num = m1.getAge() - m2.getAge();int num2 = num==0?m1.getName().compareTo(m2.getName()):num;return num2;}});for(Mentor m : list){System.out.println(m.getName()+","+m.getAge());}}
}

运行结果为

lixin,20
damo,30
huamulan,30
laofuzi,100

3. 模拟斗地主过程中的洗牌,发牌和看牌

package collection;import java.util.ArrayList;
import java.util.Collections;public class FightLandLord {public static void main(String[] args) {//创建一个牌盒,也就是创建一个集合对象,用ArrayList实现ArrayList<String> array = new ArrayList<>();String[] numbers = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};String[] colors = {"方块","梅花","红桃","黑桃"};for(String color : colors){for(String number : numbers){array.add(color+number);}}array.add("小王");array.add("大王");//洗牌,也就是把牌打散,用Collections的shuffle()实现Collections.shuffle(array);//发牌,也就是遍历集合,给三个玩家发牌ArrayList<String> youArray = new ArrayList<>();ArrayList<String> meArray = new ArrayList<>();ArrayList<String> heArray = new ArrayList<>();ArrayList<String> dpArray = new ArrayList<>();for(int i=0;i<array.size();i++){String poker = array.get(i);if(i>=array.size()-3){dpArray.add(poker);}else if(i%3==0){youArray.add(poker);}else if(i%3==1){meArray.add(poker);}else if(i%3==2){heArray.add(poker);}}//看牌,也就是三个玩家分别遍历自己的牌lookPoker("you",youArray);lookPoker("me",meArray);lookPoker("he",heArray);lookPoker("底牌",dpArray);}public static void lookPoker(String name,ArrayList list){System.out.print(name+"的牌是:");for(int i=0;i<list.size();i++){System.out.print(list.get(i)+" ");}System.out.println();}
}

运行结果为

you的牌是:梅花2 梅花A 方块7 方块2 黑桃2 梅花4 方块K 红桃3 黑桃Q 红桃10 红桃9 黑桃3 红桃6 梅花J 方块J 梅花7 梅花5
me的牌是:黑桃K 梅花K 红桃J 梅花3 黑桃9 红桃Q 方块4 黑桃4 大王 方块5 方块9 红桃7 黑桃8 红桃5 红桃2 方块Q 小王
he的牌是:黑桃10 梅花Q 红桃A 梅花6 梅花9 梅花8 方块A 黑桃J 方块3 方块6 黑桃5 红桃K 黑桃7 方块8 黑桃6 红桃4 梅花10
底牌的牌是:黑桃A 方块10 红桃8

4. 模拟斗地主升级版

package collection;import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;public class FightLandLordUp {public static void main(String[] args) {//创建HashMap,键是编号,值是牌HashMap<Integer,String> hm = new HashMap<>();//创建ArrayList,存储编号ArrayList<Integer> array = new ArrayList<>();//创建花色数组和点色数组String[] colors = {"方块","梅花","红桃","黑桃"};String[] numbers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};//从0开始往HashMap里面存储编号,并存储对应的牌,同时往ArrayList里存储编号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);index++;//洗牌(洗的是编号),用Collections的shuffle()方法实现Collections.shuffle(array);//发牌(发的也是编号,为了保证编号是有序的,这里用TreeSet接收)TreeSet<Integer> youSet = new TreeSet<>();TreeSet<Integer> meSet = new TreeSet<>();TreeSet<Integer> heSet = new TreeSet<>();TreeSet<Integer> dpSet = new TreeSet<>();for(int i=0;i<array.size();i++){int x = array.get(i);if(i>=array.size()-3){dpSet.add(x);}else if(i%3==0){youSet.add(x);}else if(i%3==1){meSet.add(x);}else if(i%3==2){heSet.add(x);}}lookPoker("you",youSet,hm);lookPoker("me",meSet,hm);lookPoker("he",heSet,hm);}//定义方法看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)public static void lookPoker(String name,TreeSet<Integer> ts,HashMap<Integer,String> hm){System.out.println(name+"的牌是:");for(Integer key: ts){String poker = hm.get(key);System.out.print(poker+" ");}System.out.println();}
}

运行结果为

you的牌是:方块3 红桃3 红桃4 黑桃4 黑桃6 方块7 梅花7 红桃7 方块8 梅花9 红桃9 红桃J 红桃Q 梅花A 黑桃A 方块2 小王
me的牌是:梅花5 红桃5 梅花6 红桃6 黑桃7 梅花8 红桃8 梅花10 红桃10 黑桃10 梅花J 方块Q 方块K 红桃K 方块A 梅花2 红桃2
he的牌是:梅花3 黑桃3 方块4 方块5 黑桃5 方块6 方块9 黑桃9 方块10 方块J 黑桃J 梅花Q 梅花K 黑桃K 红桃A 黑桃2 大王
底牌的牌是:梅花4 黑桃8 黑桃Q

Java中Collections类概述和使用相关推荐

  1. 手把手带你入门Java中File类

    零基础学习Java之File类 概述 构造方法 基本介绍 代码示例 常用方法 获取文件和目录的基本信息 代码示例 判断功能 代码示例 创建和删除功能 代码示例 目录遍历功能 代码示例 概述 要学习Ja ...

  2. Java API —— Collections类

    1.Collections类概述 针对集合操作 的工具类,都是静态方法 2.Collections成员方法 public static <T> void sort(List<T> ...

  3. 一文读懂Java中File类、字节流、字符流、转换流

    一文读懂Java中File类.字节流.字符流.转换流 第一章 递归:File类: 1.1:概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. ...

  4. java中Collections.sort() 排序函数的用法

    java中Collections.sort() 排序函数的用法: 用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: /** ...

  5. Java 中 Pair 类的五种替代方案

    Pair 是一个容器,用于存储两个对象的元组.Java 并没有真正提供 Pair 类的任何实现.这篇文章将讨论 Java 中 Pair 类的各种替代方案. Pair 通常用于一起跟踪两个对象.它包含两 ...

  6. Java中Arrays类的常用方法

    Java中Arrays类的常用方法 Arrays类位于 java.util 包中,主要包含了操作数组的各种方法. import java.util.Arrays; Arrays.fill(); //填 ...

  7. Java中Collections.sort()的使用!

    请注明出处:http://blog.csdn.net/qq_23179075/article/details/78753136 Java中Collections.sort()的使用! 在日常开发中,很 ...

  8. Java中File类之createNewFile、mkdirs

    Java中File类 1. 概述 2. mkdirs与mkdir区别 2.1 基本概念 2.2 程序实例 3. createNewFile 3.1 基本概念 3.2 程序范例 1. 概述 File 对 ...

  9. java中properties作用,java中Properties类的使用

    java中Properties类的使用 在java.util 包下面有一个类 Properties,该类主要用于读取以项目的配置文件(以.properties结尾的文件和xml文件). Propert ...

最新文章

  1. 如何判断网站设计是否优质?
  2. python web为什么不火-编程语言里的明星:Python为什么突然不火了?
  3. C++ 常用函数总结
  4. 无插件web直播解决方案,ffmpeg+nginx-http-flv-module+flv.js
  5. python 最快 因式分解_Python实现的对一个数进行因式分解操作示例
  6. 嵌入式成长轨迹25 【Linux应用编程强化】【Linux下的C编程 下】【实例:客户端/服务器端程序】...
  7. [shell] while read line 与for循环的区别
  8. ARM Linux 3.x的设备树
  9. grafana的前端技术_Grafana开发环境搭建
  10. [转载] python中的numpy模块和pandas模块的区别_numpy 模块和 pandas 模块
  11. 区块链零知识证明:Zcash 基础知识普及帖,Zcash 技术分析
  12. 有没有大佬无偿提供一下 华为HCNA-Cloud Service-题库H13-811
  13. 一套完整的综合布线系统方案
  14. 【转】 精密贴片电阻阻值对照表
  15. 服务器版“永恒之蓝”高危预警 (Samba远程命令执行漏洞CVE-2017-7494) 攻击演示...
  16. 47、微信-发起群聊AddGroupChatActivity
  17. 计算机组成原理无符号数除法,计算机组成原理课设 不恢复余数的无符号阵列除法器.doc...
  18. 网络攻防“三剑客”正式加盟墨者安全 担任首席安全顾问...
  19. 有关于TableGen的简单介绍
  20. 从两万亿医疗市场中寻找IT商机

热门文章

  1. 四川哪家专科学院计算机好,2019四川省最好的十大专科学校排名
  2. MyBatis基础篇
  3. 数学界的扫地僧们(转载)
  4. Jlink命令行烧录
  5. 分享一个python 处理mysql的简易封装模块---directsql
  6. Mybatis-Plus进阶之扩展插件
  7. 杭州市建筑工程师职称评审申报指南
  8. Android基于Poi生成Word
  9. windows下整合UCenter、ECShop、Discus
  10. JWT JWS JWE