详解 Collections类
(请关注 本人“集合总集篇”博文——《详解 集合框架》)
有的同学可能会有这样的疑问 —— Collections类也是集合吗?
答曰:非也!
那为什么要讲解这个类呢?
答曰:此类为 针对集合操作 的工具类
Collections类:
概念:
针对集合操作 的工具类
首先,本人来展示下 这个类的API:
- 构造方法:
- static List EMPTY_LIST :
空的列表(不可变的)- static Map EMPTY_MAP
空的映射(不可变的)- static Set EMPTY_SET
空的 set(不可变的)
- 常用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的操作,主要是针对“键元素”)
那么,本人在这里来讲解一个很有趣的例子 —— 模拟斗地主 的 洗牌和发牌 操作:
本人先来说明一下规则:
规则:
- 一共三个玩家
- 每个玩家按照顺序依次抽取扑克牌,没人总共抽取17张
- 剩余3张扑克牌作为底牌,由“地主”收取
由于本例仅展示发牌和看牌的操作,所以,大致操作流程如下:
- 将54张扑克牌依次存储一个ArrayList中(装进牌盒子)
- 打乱这54张扑克牌(洗牌)
- 按顺序给三个TreeSet依次发牌,并留三张牌存入另一个TreeSet中(发牌、理牌)
- 遍历这四个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类的更多相关文章
- Unity3D - 详解Quaternion类(二)
OK,不做引子了,接上篇Unity3D - 详解Quaternion类(一)走起! 四.Quaternion类静态方法 Quaternion中的静态方法有9个即:Angle方法.Dot方法.Euler ...
- Unity3D - 详解Quaternion类(一)
一.简介 Quaternion又称四元数,由x,y,z和w这四个分量组成,是由爱尔兰数学家威廉·卢云·哈密顿在1843年发现的数学概念.四元数的乘法不符合交换律.从明确地角度而言,四元数是复数的不可交 ...
- unity3D游戏开发之详解Animation类和Animator类
详解Animator类和Animation类 链接: http://wenku.baidu.com/link?url=SiaUYcdrNYjOYrWVDJSKGAYdJOntMTOhsVJtyBk2i ...
- 【python进阶】详解元类及其应用1
前言 元类在python中是很重要的一部分,我将分两次去讲解元类及其应用,此篇为详解元类及其应用第一篇,下面开始今天的说明~~~ 1. 类也是对象 在⼤多数编程语⾔中,类就是⼀组⽤来描述如何⽣成⼀个对 ...
- 【python进阶】详解元类及其应用2
前言 在上一篇文章[python进阶]详解元类及其应用1中,我们提到了关于元类的一些前置知识,介绍了类对象,动态创建类,使用type创建类,这一节我们将继续接着上文来讲~~~ 5.使⽤type创建带有 ...
- Kotlin——最详解的类(class)的使用
在任何一门面向对象编程的语言里,类(class)是非常基础.但也是非常重要的一项组成,通俗的说就是万般皆对象,而所说的对象就是我们生成的类.Kotlin也是如此,下面详细为大家介绍Kotlin中的类的 ...
- IOC和AOP使用扩展之AOP详解实现类
摘要: “Depend on yourself” is what nature says to every man. Parents can help you. Teachers can hel ...
- 详解 Arrays类
请关注本人博文--<详解 普通数组 -- Arrays类 与 浅克隆> Arrays类: 概述: 针对数组进行操作的工具类.它提供了对于数组的值的排序.查找等功能. 现在,本人来展示一下A ...
- 详解 Paths类 与 Files类
在本篇博文中,本人主要讲解NIO 的两个核心点 -- 缓冲区(Buffer) 和 通道 (Channel)之一的 缓冲区(Buffer), 有关NIO流的其他知识点请观看本人博文<详解 NIO流 ...
随机推荐
- leetcode 每日签到 409. 最长回文串
题目: 最长回文串 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: ...
- Trie树的简单实现
import java.util.ArrayList; import java.util.TreeMap; import util.FileOperation; public class Trie { ...
- sql-lib闯关1-10关
闯关之前我们需要搭建所需环境SQLi-Labs SQLi-Labs是一个专业的SQL注入练习平台,该平台包含了以下在测试场景中常见的注入类型: 1.报错注入(联合查询) 1)字符型 ...
- mysqlbinlog错误:Error in Log_event::read_log_event(): 'read error'
环境: mysql 5.6 ; binlog 3.4 ; binlog_format MIXED ; .报错: mysqlbinlog -v --start-position=166084123 m ...
- Oracle client客户端简易安装网上文档一
Oracle client客户端简易安装网上文档一-------------------------------------------------------------------------一. ...
- linggle使用技巧
Linggle 搜索引擎是一个可用于英语写作的语法.句子工具,可帮助学习者分析更准确的英文写作建议,能够根据词性来推测短句和句子,可精准的分享出完整英文句子如何撰写. Linggle 是台湾学术团队研 ...
- JSOI 2016 病毒感染 辅助Dp问题
原题链接:https://www.luogu.com.cn/problem/P5774 分析 直接看这道题,第一个困惑点,那个绝对值的比较是什么东西,根据数学知识,我们可以知道这个意思是k到i的距离小 ...
- 巴什博弈 HDU-1846
描述:一堆石子有 n 个 ,两个人开始轮流取,每人最多取m个,最少取1个,最后一个将石子取完的是赢家. 思路:对于先手来说,如果有(m+1)个石子,先手取 k 个,后手就可以取 m+1-k 个,所以有 ...
- Git入门操作(一)
最近真正用到了Git,感觉还是需要好好整理一下最最基础用法,与萌新共享.^_^ 关于Git的基础介绍,这里不再赘述,下面撸代码了(主要是命令行的操作,属于linux操作系统的,可能没听过,但记住就好了 ...
- Python——NumPy库入门
1.数据的纬度 维度:一组数据的组织形式 1.1 一维数据 一维数据由对等关系的有序或无序数据构成,采用线性方式组织 ,对应列表.数组和集合等概念 列表:数据类型可以不同 ,如 3.1413, 'pi ...