Java学习笔记--Collections工具类

简介

Collections是针对集合操作的工具类,里面的方法都是静态方法。

Collections和Collection的区别?

  • Collection是单列集合的顶层接口,它的子接口有List,和Set。
  • Collections:是针对集合操作的工具类,有对集合进行排序和二分查找等方法

常用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):随机置换

注意

Collections可以针对ArrayList存储基本包装类的元素排序,存储自定义对象时需实现Comparable接口,或者在排序的的时候传入Comparator比较器。

例子

  1. 模拟斗地主洗牌和发牌
package cn.loveqrc;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

/**
 * 模拟斗地主洗牌和发牌
 * 输出结果如:
 *  a牌是:♣3 ♡3 ♤3 ♡4 ♤5 ♡7 ♤7 ♢8 ♣8 ♤8 ♤Q ♢K ♣K ♤K ♣A ♡2 小王 
 *  b牌是:♢5 ♣6 ♡6 ♤6 ♢7 ♢9 ♡9 ♣10 ♤10 ♢J ♣J ♡J ♤J ♡Q ♢A ♡A ♤2 
 *  c牌是:♢3 ♢4 ♣4 ♤4 ♣5 ♡5 ♢6 ♣7 ♡8 ♣9 ♤9 ♢10 ♡10 ♢Q ♢2 ♣2 大王 
 *  底牌牌是:♣Q ♡K ♤A 
 * @author loveqRc
 * 
 */
public class ProkerDemo {
    private static HashMap<Integer, String> proker;
    public static void main(String[] args) {
        String[] huase = { "♢", "♣" , "♡","♤"};
        String[] num = {"3", "4", "5", "6", "7", "8", "9", "10",
                "J", "Q", "K" ,"A","2"};
        proker = new HashMap<>();
        List<Integer> list=new ArrayList<Integer>();
        int index=0;
        for (String prokernum : num) {
            for (String prokerhuase : huase) {
                proker.put(index, prokerhuase.concat(prokernum));
                list.add(index);
                index++;
            }
        }
        list.add(index);
        proker.put(index, "小王");
        index++;
        list.add(index);
        proker.put(index, "大王");//到这里准备好一副牌了
        Collections.shuffle(list);//洗牌
        //TreeSet保证唯一,自然排序。
        TreeSet<Integer> a=new TreeSet<>();//玩家A
        TreeSet<Integer> b=new TreeSet<>();//玩家B
        TreeSet<Integer> c=new TreeSet<>();//玩家C
        TreeSet<Integer> dipai=new TreeSet<>();
        for (int i = 0; i < list.size(); i++) {//发牌
            if (i>=list.size()-3) {
                dipai.add(list.get(i));
            }else if (i%3==0) {
                a.add(list.get(i));
            }else if (i%3==1) {
                b.add(list.get(i));
            }else if (i%3==2) {
                c.add(list.get(i));
            }
        }

        showPoker("a",a);
        showPoker("b",b);
        showPoker("c",c);
        showPoker("底牌",dipai);
    }
    public static void showPoker(String name,TreeSet<Integer> set){
        System.out.print(name+"牌是:");
        for (Integer integer : set) {
            System.out.print(proker.get(integer)+" ");
        }
        System.out.println();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值