Collection和Collections有什么区别?

  • 2019 年 10 月 4 日
  • 笔记

1、java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。

List,Set,Queue接口都继承Collection。 直接实现该接口的类只有AbstractCollection类,该类也只是一个抽象类,提供了对集合类操作的一些基本实现。List和Set的具体实现类基本上都直接或间接的继承了该类。

2、java.util.Collections 是一个包装类。 它包含有各种有关集合操作的静态方法(对集合的搜索、排序、线程安全化等),大多数方法都是用来处理线性表的。此类不能实例化,就像一个工具类,服务于Java的Collection框架

public class CollectionsTest {      public static void main(String[] args) {          ArrayList nums = new ArrayList();          nums.add(8);          nums.add(-3);          nums.add(2);          nums.add(9);          nums.add(-2);            System.out.println("集合是否为空:" + nums.isEmpty());            System.out.println("默认顺序:" + nums);          Collections.reverse(nums);          System.out.println("反转后顺序:" + nums);            Collections.sort(nums);          System.out.println("排序后顺序:" + nums);            Collections.shuffle(nums);          System.out.println("混淆后顺序:" + nums);          // 下面只是为了演示定制排序的用法,将int类型转成string进行比较          Collections.sort(nums, new Comparator() {                @Override              public int compare(Object o1, Object o2) {                  String s1 = String.valueOf(o1);                  String s2 = String.valueOf(o2);                  return s1.compareTo(s2);              }            });          System.out.println("指定排序后顺序:" + nums);          System.out.println("最大的值是:" + Collections.max(nums));          System.out.println("最小的值是:" + Collections.min(nums));      }  }