Java中Collections类概述和使用
目录
- Collections类概述
- 用Collections类的sort()方法对ArrayList集合元素排序
- 模拟斗地主过程中的洗牌,发牌和看牌
- 模拟斗地主升级版
1. 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类概述和使用相关推荐
- 手把手带你入门Java中File类
零基础学习Java之File类 概述 构造方法 基本介绍 代码示例 常用方法 获取文件和目录的基本信息 代码示例 判断功能 代码示例 创建和删除功能 代码示例 目录遍历功能 代码示例 概述 要学习Ja ...
- Java API —— Collections类
1.Collections类概述 针对集合操作 的工具类,都是静态方法 2.Collections成员方法 public static <T> void sort(List<T> ...
- 一文读懂Java中File类、字节流、字符流、转换流
一文读懂Java中File类.字节流.字符流.转换流 第一章 递归:File类: 1.1:概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. ...
- java中Collections.sort() 排序函数的用法
java中Collections.sort() 排序函数的用法: 用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: /** ...
- Java 中 Pair 类的五种替代方案
Pair 是一个容器,用于存储两个对象的元组.Java 并没有真正提供 Pair 类的任何实现.这篇文章将讨论 Java 中 Pair 类的各种替代方案. Pair 通常用于一起跟踪两个对象.它包含两 ...
- Java中Arrays类的常用方法
Java中Arrays类的常用方法 Arrays类位于 java.util 包中,主要包含了操作数组的各种方法. import java.util.Arrays; Arrays.fill(); //填 ...
- Java中Collections.sort()的使用!
请注明出处:http://blog.csdn.net/qq_23179075/article/details/78753136 Java中Collections.sort()的使用! 在日常开发中,很 ...
- Java中File类之createNewFile、mkdirs
Java中File类 1. 概述 2. mkdirs与mkdir区别 2.1 基本概念 2.2 程序实例 3. createNewFile 3.1 基本概念 3.2 程序范例 1. 概述 File 对 ...
- java中properties作用,java中Properties类的使用
java中Properties类的使用 在java.util 包下面有一个类 Properties,该类主要用于读取以项目的配置文件(以.properties结尾的文件和xml文件). Propert ...
最新文章
- 如何判断网站设计是否优质?
- python web为什么不火-编程语言里的明星:Python为什么突然不火了?
- C++ 常用函数总结
- 无插件web直播解决方案,ffmpeg+nginx-http-flv-module+flv.js
- python 最快 因式分解_Python实现的对一个数进行因式分解操作示例
- 嵌入式成长轨迹25 【Linux应用编程强化】【Linux下的C编程 下】【实例:客户端/服务器端程序】...
- [shell] while read line 与for循环的区别
- ARM Linux 3.x的设备树
- grafana的前端技术_Grafana开发环境搭建
- [转载] python中的numpy模块和pandas模块的区别_numpy 模块和 pandas 模块
- 区块链零知识证明:Zcash 基础知识普及帖,Zcash 技术分析
- 有没有大佬无偿提供一下 华为HCNA-Cloud Service-题库H13-811
- 一套完整的综合布线系统方案
- 【转】 精密贴片电阻阻值对照表
- 服务器版“永恒之蓝”高危预警 (Samba远程命令执行漏洞CVE-2017-7494) 攻击演示...
- 47、微信-发起群聊AddGroupChatActivity
- 计算机组成原理无符号数除法,计算机组成原理课设 不恢复余数的无符号阵列除法器.doc...
- 网络攻防“三剑客”正式加盟墨者安全 担任首席安全顾问...
- 有关于TableGen的简单介绍
- 从两万亿医疗市场中寻找IT商机