Collection 和 Collections 的区别与用法


💖The Begin💖点点关注,收藏不迷路💖

在Java中,CollectionCollections 是两个非常重要的概念,但它们的功能和用途截然不同。尽管它们的名字相似,但它们的角色和用法却大相径庭。下面,我们将详细探讨这两个概念的区别和用法。

1、Collection 接口

Collection 是Java集合框架中的一个根接口。它定义了所有集合都应该有的基本操作,如添加、删除、检查元素是否存在等。Collection 接口并不直接用于实例化对象,而是由其子接口(如 ListSetQueue)或实现类(如 ArrayListLinkedListHashSetTreeSet 等)来实现具体的集合功能。

1.1 主要特点

  • 提供了集合的基本操作,如添加、删除、检查元素是否存在等。
  • 不提供元素的顺序保证(除了 List 和它的实现类,如 ArrayListLinkedList)。
  • 允许元素重复(除了 Set 和它的实现类,如 HashSetTreeSet)。

1.2 常见方法

  • boolean add(E e): 添加元素到集合中。
  • boolean remove(Object o): 从集合中移除指定元素。
  • boolean contains(Object o): 检查集合中是否包含指定元素。
  • int size(): 返回集合中元素的数量。
  • Iterator<E> iterator(): 返回此集合的迭代器。

2、 Collections 工具类

Collections 是Java提供的一个工具类,它包含了对集合进行操作的静态方法。这些方法可以对集合进行搜索、排序、线程安全化等操作,而无需修改集合的源代码。

2.1 主要特点

  • 提供了一系列静态方法,用于对集合进行搜索、排序、线程安全化等操作。
  • 不能直接实例化,只能使用其中的静态方法。

2.2 常见方法

  • sort(List<T> list): 对列表进行自然排序。
  • sort(List<T> list, Comparator<? super T> c): 根据指定的比较器对列表进行排序。
  • binarySearch(List<? extends Comparable<? super T>> list, T key): 使用二分查找算法在已排序的列表中搜索指定元素。
  • max(Collection<? extends T> coll): 返回集合中的最大值元素(根据元素的自然顺序或比较器)。
  • synchronizedList(List<T> list): 返回指定列表支持的同步(线程安全)列表。

3、示例代码

3.1 使用 Collection 接口

List<String> list = new ArrayList<>();  
	list.add("Apple");  
	list.add("Banana");  
	list.add("Cherry");  
System.out.println(list.contains("Banana")); // 输出: true

3.2 使用 Collections 工具类

List<String> list = new ArrayList<>();  
	list.add("Apple");  
	list.add("Banana");  
	list.add("Cherry");  
  
	Collections.sort(list); // 对列表进行自然排序  
System.out.println(list); // 输出: [Apple, Banana, Cherry]  
  
int index = Collections.binarySearch(list, "Banana"); // 使用二分查找算法搜索元素  
System.out.println(index); // 输出: 1

4、总结

1、Collection 是Java集合框架中的一个根接口,它定义了集合的基本操作,并由其子接口和实现类来实现具体的集合功能。

2、而 Collections 是一个工具类,它提供了一系列静态方法,用于对集合进行搜索、排序、线程安全化等操作,而无需修改集合的源代码。

在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖

相关推荐

  1. 排序时Collections.sortComparator区别

    2024-07-10 07:42:01       54 阅读
  2. kotlin flow collect collectLatest 区别

    2024-07-10 07:42:01       29 阅读
  3. Collection中常方法

    2024-07-10 07:42:01       40 阅读
  4. 可变参数Collections

    2024-07-10 07:42:01       39 阅读
  5. mybatis中<association> collection

    2024-07-10 07:42:01       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 07:42:01       99 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 07:42:01       107 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 07:42:01       90 阅读
  4. Python语言-面向对象

    2024-07-10 07:42:01       98 阅读

热门阅读

  1. 【数据基础】— 基于Go1.19的站点模板爬虫的实现

    2024-07-10 07:42:01       33 阅读
  2. Perl 语言入门学习

    2024-07-10 07:42:01       34 阅读
  3. perl语言入门学习

    2024-07-10 07:42:01       34 阅读
  4. Apache Spark 的基本概念和在大数据分析中的应用

    2024-07-10 07:42:01       30 阅读
  5. CSS 下拉菜单的设计与实现

    2024-07-10 07:42:01       33 阅读
  6. 快速排序算法Python实现

    2024-07-10 07:42:01       31 阅读
  7. python爬虫入门(二)之Requests库

    2024-07-10 07:42:01       23 阅读
  8. RTK_ROS_导航(4):ROS中空地图的生成与加载

    2024-07-10 07:42:01       25 阅读
  9. PCL + Qt + Ribbon 风格(窗口自由组合) demo展示

    2024-07-10 07:42:01       53 阅读
  10. Android Studio Download Gradle 时慢问题解决

    2024-07-10 07:42:01       23 阅读