Java集合框架18:Collections工具類
阿新 • • 發佈:2018-11-17
Collections中常見方法
1、public static void sort(List list)。
2、 public static int binarySearch(List<?> list,T key)。
3、 public static void max(Collection<?> coll)。
4、public static void reverse(List<?> list)。
5、 public static void shuffle(List<?> list)。
案例演示
package map; import java.util.ArrayList; import java.util.Collections; public class Dmeo_Collections { public static void main(String[] args) { //demo(); ArrayList<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); list.add("g"); list.add("a"); //System.out.println(Collections.max(list)); // System.out.println(list); // Collections.reverse(list);//反轉 // System.out.println(list); Collections.shuffle(list);//隨意置換,可以用來洗牌 System.out.println(list); } public static void demo() { ArrayList<String> list = new ArrayList<>(); list.add("c"); list.add("b"); list.add("d"); list.add("a"); list.add("c"); System.out.println(list); Collections.sort(list); System.out.println(list); } public static void demo2() { //使用二分搜尋法搜尋指定列表,以獲得指定物件。在進行此呼叫之前,必須根據指定的比較器對列表進行升序排序(通過 sort(List, Comparator) 方法)。 //如果沒有對列表進行排序,則結果是不確定的。如果列表包含多個等於指定物件的元素,則無法保證找到的是哪一個。 ArrayList<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); list.add("g"); list.add("a"); //如果搜尋鍵包含在列表中,則返回搜尋鍵的索引;否則返回 (-(插入點) - 1)。 //插入點 被定義為將鍵插入列表的那一點:即第一個大於此鍵的元素索引;如果列表中的所有元素都小於指定的鍵,則為 list.size()。 //注意,這保證了當且僅當此鍵被找到時,返回的值將 >= 0。 System.out.println(Collections.binarySearch(list,"a")); System.out.println(Collections.binarySearch(list, "z")); } }
package project; import java.util.ArrayList; import java.util.Collections; public class Test2 { /** * 分析 * 1,買一副撲克,其實就是自己建立一個集合物件,將撲克牌儲存進去 * 2,洗牌 * 3,發牌 * 4,看牌 */ public static void main(String[] args){ //1,買一副撲克,其實就是自己建立一個集合物件,將撲克牌儲存進去 String[] num = {"A","1","2","3","4","5","6","7","8","9","10","J","Q","K"}; String[] color = {"紅桃","黑桃","方片","梅花"}; ArrayList<String> poker = new ArrayList<>(); //拼接花色和數字 for(String s1 : color) { for(String s2 : num){ poker.add(s1.concat(s2)); //concat連線兩個字串 } } System.out.println(poker); poker.add("小王"); poker.add("大王"); //2,洗牌 Collections.shuffle(poker); //3,發牌 ArrayList<String> gaojin = new ArrayList<>(); ArrayList<String> longwu = new ArrayList<>(); ArrayList<String> me = new ArrayList<>(); ArrayList<String> dipai = new ArrayList<>(); for(int i = 0; i < poker.size(); i ++) { if(i >= poker.size() - 3) { dipai.add(poker.get(i)); } else if (i % 3 == 0) { gaojin.add(poker.get(i)); } else if (i % 3 == 1) { longwu.add(poker.get(i)); } else { me.add(poker.get(i)); } } //4,看牌 System.out.println(gaojin); System.out.println(longwu); System.out.println(me); } }
package project; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.TreeSet; public class Test3 { /** * A:案例演示 * 模擬鬥地主洗牌和發牌並對鍵進行排序的程式碼實現 * * 分析: * 1,買一副撲克,其實就是自己建立一個集合物件,將撲克牌儲存進去 * 2,洗牌 * 3,發牌 * 4,看牌 * */ public static void main(String[] args) { //1,買一副撲克,其實就是自己建立一個集合物件,將撲克牌儲存進去 String[] num = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"}; String[] color = {"紅桃","黑桃","方片","梅花"}; HashMap<Integer,String> hm = new HashMap<>(); //儲存索引和撲克牌 ArrayList<Integer> list = new ArrayList<>(); //儲存索引 int index = 0; //拼接撲克牌並索引和撲克牌儲存在hm中 for(String s1 : num) { //獲取數字 for(String s2 : color){ //獲取顏色 hm.put(index,s2.concat(s1)); list.add(index); index ++; } } //將大小王新增到雙列集合中 hm.put(index,"小王"); list.add(index); //將52索引新增到集合中 index ++; hm.put(index, "大王"); //將52索引新增到集合中 list.add(index); System.out.println(hm); System.out.println(list); //2,洗牌 Collections.shuffle(list); System.out.println(list); //3,發牌 TreeSet<Integer> gaojin = new TreeSet<>(); TreeSet<Integer> longwu = new TreeSet<>(); TreeSet<Integer> me = new TreeSet<>(); 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) { gaojin.add(list.get(i)); } else if(i % 3 == 1) { longwu.add(list.get(i)); } else { me.add(list.get(i)); } } //看牌 lookPoker(hm,gaojin,"高進"); lookPoker(hm,longwu,"龍武"); lookPoker(hm,me,"肖士成"); lookPoker(hm,dipai,"底牌"); } /* * 看牌 * 1,返回值型別void * 2,引數列表HashMap,TreeSet,String name * */ public static void lookPoker(HashMap<Integer,String> hm,TreeSet<Integer>ts,String name) { System.out.println(name + "的牌是:"); for(Integer i : ts) {//i代表雙列集合中的每一個鍵 System.out.print(hm.get(i) + " "); } System.out.println(); } }