Java集合框架18:Collections工具类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuming226/article/details/83964416
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();
     }
     
}

猜你喜欢

转载自blog.csdn.net/yuming226/article/details/83964416