简介
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比较器。
例子
- 模拟斗地主洗牌和发牌
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();
}
}