17.5 Collections:工具类

  1. 排序操作(主要针对List接口相关)

    • reverse(List list):反转指定List集合中元素的顺序

    • shuffle(List list):对List中的元素进行随机排序(洗牌)

    • swap(List list, int i, int j):将指定List集合中i处元素和j出元素进行交换

    • rotate(List list, int distance):将所有元素向右移位指定长度,如果distance等于size那么结果不变

    • sort(List list):对List里的元素根据自然升序排序 ( list里的元素对应的类必须是实现了Comparable接口)

      /**接口Comparable<T>
      * public interface Comparable<T> {
      *     public int compareTo(T o);
      * }
      * 实现接口的时指定泛型为本类型
      */
      public class Student implements Comparable<Student> {
          ...
          @Override 
           //实现compareTo 方法,说明:源码内部实现排序采用的二叉树和快速排序的结合,是升序排序
          public int compareTo(Student o) {
              //自定义比较规则
              if(条件){
                  return 1; //返回大于0的数,则说明本对象大于要比较的对象
              }else if(条件){
                  return -1;//返回小于0的数,则说明本对象小于要比较的对象
              }
              return 0;//返回0,则说明本对象等于要比较的对象
          }
      }
      

    //说明:实现Comparable接口,代码重用率高

      sort(List list, Comparator c):自定义比较器进行排序()
    
      ...
      sort(list,null);//若比较器传入null值时,则相当于上面的方法sort(list),按上面的方式比较。
    
      /**
       * 接口Comparator<T>
       * public Interface Comparator<T>{
       *     int compare(T o1, T o2); 
       * }
       * 匿名内部类实现Comparator接口的时候泛型指定为集合中要比较的元素类型
       */
        Collections.sort(list, new Comparator<Student>(){
            @Override
            public int compare(Student o1, Student o2) {
              //自定义比较规则:o1和o2进行比较
              if(条件){
                return 1;  //返回值大于0,则说明自定义为 o1>o2
              }else if(条件){
                return -1;  //返回值小于0,则说明 自定义为 o1<o2
              }
              return 0;//返回0,则说明自定义为 o1=o2
            }
        });
    
      //说明:一般用匿名类实现Comparator接口,使用灵活,规则可以随意根据需要而定。
    

  2. 查找和替换(主要针对Collection接口相关)

    • fill(List list, Object obj):使用指定对象填充

    • frequency(Collection c, Object o):返回指定集合中指定对象出现的次数 (需要重写equals()方法)

    • replaceAll(List list, Object old, Object new):替换

    • binarySearch(List list, Object key):(要先排序)使用二分搜索法,以获得指定对象在List中的索引(下标)。

    以下几个方法,需要先实现Comparable或者Comparator接口

    • max(Collection coll);返回最大元素

    • max(Collection coll, Comparator comp):根据自定义比较器,返回最大元素

    • min(Collection coll):返回最小元素

    • min(Collection coll, Comparator comp):根据自定义比较器,返回最小元素

  3. 其他用法比较不常用,详情请参照 JAVA API 说明。

results matching ""

    No results matching ""