详解 Collections类

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

有的同学可能会有这样的疑问 —— 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("
上一篇:40行代码爬取猫眼电影TOP100榜所有信息


下一篇:this