首页 > 编程笔记

Java Collections工具类的用法

在 Java 中,集合除了可以存储数据,也提供了很多方法来对数据进行操作,但是这些方法都有其局限性,实际操作起来不是很方便。

JDK 为我们提供来一个工具类 Collections,专门用来操作集合,例如添加元素、对元素进行排序、替换元素等。

Collections 和 Arrays 很类似,Arrays 是针对数组的工具类,Collections 是针对集合的工具类,Collections 的定义如下:
public class Collections{}

Collections 的常用方法描述如下表所示。

表:Collections工具类常用方法
方 法 描 述
public static <T extends Comparable<? super T>> void sort(List<T> list) 根据集合泛型对应的类实现的 Comparable 接口对集合进行排序
public static <T> void sort(List<T> list, Comparator<? super T> c) 根据 Comparator 接口对集合进行摊序
public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key) 查找元素在集合中的下标,要求集合元麦必须是升序排列
private static <T> T get(Listlterator<? extends T> i, int index) 根据下标找到集合中的元奏
public static void reverse(List<?> list) 对集合元奏的顺序进行反转
public static void swap(List<?> list, int i, int j) 交换集合中指定位舌的两个元素
public static <T> void fill(List<? super T> list, T obj) 将集合中的所有元素替换为 obj
public static <T> T min(Collection<? extends T> coll, Comparator<? super T> comp) 抿据 Comparator 接口对集合进行排序,返回集合中的最小值
public static <T> T max(Collection<? extends T> coll. Comparator? super T> comp) 根据Comparator接口对集合进行排序,返回集合中的最大值
public static <T> boolean replaceAII(List<T> list T oldVal, T newVal) 将集合中的所有 oldVal 替换为 newVal
public static <T> boolean addAII(Collection<? super T> c, T... elements) 向集合添加元素

下面的实例演示了 Collections 常用方法的用法。
public class Test {
   public static void main(String[] args) {
      ArrayList list = new ArrayList();
      list.add("Hello");
      list.add("World");
      System.out.println("添加之前的集合:"+list);
      Collections.addAll(list, "Java","JavaSE","JavaME");
      System.out.println("添加之后的集合:"+list);
      Collections.reverse(list);
      System.out.println("反转之后的集合:"+list);
      Collections.swap(list, 1, 3);
      System.out.println("交换之后的集合:"+list);
      Collections.sort(list);
      System.out.println("先对集合进行排序:"+list);
      int index = Collections.binarySearch(list, "JavaME");
      System.out.println("JavaME在集合中的下标:"+index);
      Collections.replaceAll(list, "Java", "Collections");
      System.out.println("替换之后的集合:"+list);
      list = new ArrayList();
      Collections.addAll(list,new User(1,"张三",30),new User(2,"李四",26),new User(3,"王五",18));
      System.out.println("排序之前的集合:"+list);
      Collections.sort(list,new Comparator() {
         @Override
         public int compare(Object o1, Object o2) {
            // TODO Auto-generated method stub
            User user1 = (User) o1;
            User user2 = (User) o2;
            if(user1.getAge() > user2.getAge()) {
               return 1;
            }else if(user1.getAge() == user2.getAge()) {
               return 0;
            }else {
               return -1;
            }
         }
      });
      System.out.println("排序之后的集合:"+list);
   }
}

class User {
   ……
}
运行程序,结果为:

添加之前的集合:[Hello, World] 
添加之后的集合:[World, Hello, Java, JavaSE, JavaME] 
反转之后的集合:[JavaME, JavaSE, Java, Hello, World] 
交换之后的集合:[JavaME, Java, JavaSE, Hello, World] 
先对集合进行排序:[Hello, Java, JavaME, JavaSE, World] 
JavaME在集合中的下标:2 
替换之后的集合:[Hello, Collections, CollectionsME, CollectionsSE, World] 
排序之前的集合:[User{name='张三', age=30}, User{name='李四', age=26}, User{name='王五', age=18}] 
排序之后的集合:[User{name='王五', age=18}, User{name='李四', age=26}, User{name='张三', age=30}]

推荐阅读