(请关注 本人“集合总集篇”博文——《详解 集合框架》

有的同学可能会有这样的疑问 —— Collections类也是集合吗?

答曰:非也!

那为什么要讲解这个类呢?

答曰:此类为 针对集合操作 的工具类

Collections类:

概念

针对集合操作 的工具类

首先,本人来展示下 这个类的API:

  1. 构造方法:
  • static List EMPTY_LIST :

    空的列表(不可变的)
  • static Map EMPTY_MAP

    空的映射(不可变的)
  • static Set EMPTY_SET

    空的 set(不可变的)
  1. 常用API:
  • public static < T > void sort(List< T > list):

    排序,默认按照自然顺序
  • public static < T > int binarySearch(List<?> list,T key):

    二分查找
  • public static < T > T max(Collection<?> coll):

    获取最大值
  • public static void reverse(List<?> list):

    反转
  • public static void shuffle(List<?> list):

    随机置换

可以看到,本人列举的常用API都是关于List的操作,这是因为List存储的数据都是有序的,而且是单列的,所以需要的操作就更灵活些。即便是双列的Map,在一定程度上也可以拆成单列的List(因为对于Map的操作,主要是针对“键元素”)

那么,本人在这里来讲解一个很有趣的例子 —— 模拟斗地主 的 洗牌和发牌 操作:

本人先来说明一下规则:

规则:

  1. 一共三个玩家
  2. 每个玩家按照顺序依次抽取扑克牌,没人总共抽取17张
  3. 剩余3张扑克牌作为底牌,由“地主”收取

由于本例仅展示发牌和看牌的操作,所以,大致操作流程如下:

  1. 将54张扑克牌依次存储一个ArrayList中(装进牌盒子)
  2. 打乱这54张扑克牌(洗牌)
  3. 按顺序给三个TreeSet依次发牌,并留三张牌存入另一个TreeSet中(发牌、理牌)
  4. 遍历这四个TreeSet(看牌)

现在,本人根据上面的讲解上代码:

首先,本人给出一个理牌器

package about_collections;

import java.util.Comparator;

public class PokerSorter implements Comparator<String> {

    public PokerSorter() {
} @Override
public int compare(String poker1, String poker2) {
if(poker2.equals("☀")
|| (!poker1.equals("☀") && poker2.equals("

详解 Collections类的更多相关文章

  1. Unity3D - 详解Quaternion类(二)

    OK,不做引子了,接上篇Unity3D - 详解Quaternion类(一)走起! 四.Quaternion类静态方法 Quaternion中的静态方法有9个即:Angle方法.Dot方法.Euler ...

  2. Unity3D - 详解Quaternion类(一)

    一.简介 Quaternion又称四元数,由x,y,z和w这四个分量组成,是由爱尔兰数学家威廉·卢云·哈密顿在1843年发现的数学概念.四元数的乘法不符合交换律.从明确地角度而言,四元数是复数的不可交 ...

  3. unity3D游戏开发之详解Animation类和Animator类

    详解Animator类和Animation类 链接: http://wenku.baidu.com/link?url=SiaUYcdrNYjOYrWVDJSKGAYdJOntMTOhsVJtyBk2i ...

  4. 【python进阶】详解元类及其应用1

    前言 元类在python中是很重要的一部分,我将分两次去讲解元类及其应用,此篇为详解元类及其应用第一篇,下面开始今天的说明~~~ 1. 类也是对象 在⼤多数编程语⾔中,类就是⼀组⽤来描述如何⽣成⼀个对 ...

  5. 【python进阶】详解元类及其应用2

    前言 在上一篇文章[python进阶]详解元类及其应用1中,我们提到了关于元类的一些前置知识,介绍了类对象,动态创建类,使用type创建类,这一节我们将继续接着上文来讲~~~ 5.使⽤type创建带有 ...

  6. Kotlin——最详解的类(class)的使用

    在任何一门面向对象编程的语言里,类(class)是非常基础.但也是非常重要的一项组成,通俗的说就是万般皆对象,而所说的对象就是我们生成的类.Kotlin也是如此,下面详细为大家介绍Kotlin中的类的 ...

  7. IOC和AOP使用扩展之AOP详解实现类

    摘要:   “Depend on yourself” is what nature says to every man.  Parents can help you. Teachers can hel ...

  8. 详解 Arrays类

    请关注本人博文--<详解 普通数组 -- Arrays类 与 浅克隆> Arrays类: 概述: 针对数组进行操作的工具类.它提供了对于数组的值的排序.查找等功能. 现在,本人来展示一下A ...

  9. 详解 Paths类 与 Files类

    在本篇博文中,本人主要讲解NIO 的两个核心点 -- 缓冲区(Buffer) 和 通道 (Channel)之一的 缓冲区(Buffer), 有关NIO流的其他知识点请观看本人博文<详解 NIO流 ...

随机推荐

  1. 使用PostgreSQL注意事项

    一.大小写特别敏感 大写字段需要用“”引号(pg字段名使用“”,MySQL字段名使用``) ******表名以及字段名如果是小写但是为关键字,比如name,则也需使用"": 二.分 ...

  2. iOS URL schemes

    来源:知乎 launch center pro支持的参数主要有两个,[prompt]文本输入框和[clipboard]剪贴板 淘宝宝贝搜索 taobao://http://s.taobao.com/? ...

  3. jmeter4.0介绍一

    apache JMeter™应用程序是开放源码软件, 一个100% 纯 Java 应用程序, 旨在加载测试功能行为和测量性能.它最初设计用于测试 Web 应用程序, 但后来扩展到其他测试功能. Jme ...

  4. 模板字符串原理,原生js实现字符串模板

    在使用模板字符串的时候使用的是 '{{}}'形式进行书写,本文则向各位解密这么写的原因 初体验正则 首先要先明白正则表达式中exec的使用 例如: let str = 'axu1997@qq.com' ...

  5. ICPC训练周赛 Benelux Algorithm Programming Contest 2019

    D. Wildest Dreams 这道题的意思是Ayna和Arup两人会同时在车上一段时间,在Ayna在的时候,必须单曲循环Ayna喜欢的歌,偶数段Ayna下车,若此时已经放了她喜欢的那首歌,就要将 ...

  6. CSS3+CSS+HTML实现网页

    效果图: 代码实现: 样式部分style.css: *{ margin:; padding:; } body{ background-color: #673929; font-size: 16px; ...

  7. 解读windows认证

    0x00 前言 dll劫持的近期忙,没时间写,先给大家写个windows认证的水文. 0x01 windows认证协议 windows上的认证大致分为本地认证,ntlm协议,和Kerberos协议. ...

  8. C - Monkey and Banana

    文章目录 题意如下 思路如下 题解如下: A group of researchers are designing an experiment to test the IQ of a monkey. ...

  9. 我是如何从通信转到Java软件开发工程师的?

    我的读者里面有绝大部分都是在校学生,有本科的,也有专科的,我在微信里收到很多读者的提问,大部分问题都跟如何学习编程有关,有换专业自学的.有迷茫不知道如何学习的.有报培训班没啥效果的等等,我能感受到他们 ...

  10. 值传递:pass by value(按值传递) 和 pass by reference(引用传递)-[all]-[编程原理]

    所有的编程语言,都会讨论值传递问题. 通过一个js示例直观认识 //理解按值传递(pass by value)和按引用传递(pass by reference) //pass by value var ...