- Collections概述
Collections是一个操作 Set、List 和 Map 等集合的工具类。
- 常用方法
排序操作:
- reverse(List): 反转 List 中元素的顺序
- shuffle(List):对 List 集合元素进行随机排序
- sort(List):根据元素的自然顺序对指定 List 集合元素按升序排序
- sort(List,Comparator): 根据指定的 Comparator 产生的顺序对 List 集合元素进行排序
- swap(List,int,int):将指定list 集合中的i处元素和j处元素进行交换
查找
- - 0bject max(Collection): 根据元素的自然顺序,返回给定集合中的最大元素
- Object max(Collection,Comparator): 根据 Comparator 指定的顺序,返回给定集合中的最大元素
- object min(Collection):根据元素的自然顺序,返回给定集合中的最小元素
- 0bject min(Collection,Comparator): 根据 Comparator 指定的顺序,返回给定集合中的最小元素
- int binarySearch(List list,T key)在List集合中查找某个元素的下标,但是List的元素必须是T或T的子类对象,而目必须是可比较大小的,即支持自然排序的。而且集合也事先必须是有序的,否则结果不确定。
- int binarySearch(List List,T key,Comparator c)在List集合中查找某个元素的下标,但是List的元素必须是T或T的子类对象,而且集合也事先必须是按照c比较器规则进行排序过的,否则结果不确定。
- int frequency(Collection c,object o):返回指定集合中指定元素的出现次数
复制、替换
- void copy(List dest,List src): 将src中的内容复制到dest中
- boolean replaceAll(List list,Object oldVal,Obiect newVal): 使用新值替换List 对象的所有旧值
- 提供了多个unmodifiableXxx0方法,该方法返回指定 Xxx的不可修改的视图。
添加
。boolean addAll(Collection ,T... elements)将所有指定元素添加到指定 collection 中。
- 面试题,区分Collection 和 Collections
Collection:集合框架中的用于存储一个一个元素的接口,又分为List和Set等子接口。
Collections:用于操作集合框架的一个工具类。此时的集合框架包括:Set、List、Map。
模拟斗地主洗牌和发牌,牌没有排序效果如图。
提示:不要忘了大王、小王
String[] num = {"A","2","3","4","5","6","7","8","9","10","J","q","K"};String[] color = {"方片","梅花","红桃","黑桃”};
ArrayList poker = new ArrayList();
package Test0726;
import java.util.ArrayList;
import java.util.Collections;
public class PokerTest {
public static void main(String[] args) {
//1组成一副扑克牌
String[] num = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
String[] color = {"方块","梅花","红桃","黑桃"};
ArrayList poker = new ArrayList();
for(int i = 0 ;i < color.length;i++){
for(int j = 0; j < num.length;j++){
poker.add(color[i] + " " +num[j]);
}
}
//添加大小王
poker.add("大王");
poker.add("小王");
//2洗牌
Collections.shuffle(poker);
//3发牌
//3.1创建3个角色,和一个底牌
ArrayList tom = new ArrayList();
ArrayList LImin = new ArrayList();
ArrayList Xiaohua = new ArrayList();
ArrayList DP = new ArrayList();
for(int i = 0;i < poker.size();i++){
if (i >= poker.size() -3){
DP.add(poker.get(i));
}
if (i%3 == 0){
tom.add(poker.get(i));
} else if (i%3 ==1) {
LImin.add(poker.get(i));
}else if(i%3 ==2 ){
Xiaohua.add(poker.get(i));
}
}
//3.2遍历显示
System.out.print("Tom:");
System.out.println(tom);
System.out.print("LImin:");
System.out.println(LImin);
System.out.print("Xiaohua:");
System.out.println(Xiaohua);
System.out.print("底牌:");
System.out.println(DP);
}
}