Java中Collection和Collections的区别

 更新时间:2024年04月15日 09:42:32   作者:Wangwq.  
Collection是一个集合接口,集合类的顶级接口,Collections是一个包装类,本文主要介绍了Java中Collection和Collections的区别,具有一定的参考价值,感兴趣的可以了解一下

java.util.Collection

是一个集合接口,集合类的顶级接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。

在这里插入图片描述

Collection是最基本集合接口,它定义了一组允许重复的对象。Collection接口派生了两个子接口Set和List,分别定义了两种不同的存储方式,如下

  • Set接口继承于Collection接口,它没有提供额外的方法,但实现了Set接口的集合类中的元素是无序且不可重复
  • List接口继承于Collection接口,但是与Set接口恰恰相反,List接口的集合类中的元素是对象有序且可重复

List 接口有两个重要的实现类 ArrayList 和 LinkedList

Map接口Map也是接口,但没有继承Collection接口。
该接口描述了从不重复的键到值的映射。Map接口用于维护键/值对(key/value)

Map接口有两个重要的实现类:

  • HashMap:中文叫散列表,基于哈希表实现,特点就是键值对的映射关系。一个key对应一个Value。HashMap中元素的排列顺序是不固定的。更加适合于对元素进行插入、删除和定位。
  • TreeMap:基于红黑树实现。TreeMap中的元素保持着某种固定的顺序。更加适合于对元素的顺序遍历。

Iterator接口Iterator接口,在C#里有例外一种说法IEnumerator,他们都是集合访问器,用于循环访问集合中的对象。 所有实现了Collection接口的容器类都有iterator方法,用于返回一个实现了Iterator接口的对象。Iterator对象称作迭代器,Iterator接口方法能以迭代方式逐个访问集合中各个元素,并可以从Collection中除去适当的元素。

java.util.Collections

是一个包装类(工具类/帮助类)。
它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,用于对集合中元素进行排序、搜索以及线程安全等各种操作,服务于Java的Collection框架。

Collections类里面包括动态、有序、可变大小的一维数组Vector与ArrayList
两者唯一的差别是:vector自带线程互斥,多个线程对其读写会抛出异常,而arraylist则允许多个线程读写,其他部分是一模一样的。

Vector的使用:

public static void Vectortest() {
	Vector<Object> vector = new Vector<Object>();
	vector.add(1.6);
	vector.add(2.06);
	vector.add(1);
	System.out.println("单纯的add表示从结尾加入元素:" + vector);
	System.out.println("size()能求出vector的所含元素的个数:" + vector.size());
	vector.remove(1);
	System.out.println("remove(1)表示删去第1个元素,由于计数从0开始,也就是2.06这个元素:" + vector);
	vector.remove(vector.lastElement());
	System.out.println("删去最后一个元素的vector为:" + vector);
	vector.add(0, 1.8888);
	System.out.println("在第0个位置加入1.8888这个元素:" + vector);
	vector.set(0, "a");
	System.out.println("把第0个位置这个元素改为a:" + vector);
}

从以上代码中可以看出,vector 的各种操作更便捷。可以在任意位置插入元素,也可以不用遍历数组就能够用一个方法删除指定位置的元素。

到此这篇关于Java中Collection和Collections的区别的文章就介绍到这了,更多相关Java Collection Collections内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java中调用https请求忽略ssl证书认证代码示例

    java中调用https请求忽略ssl证书认证代码示例

    在网络请求中经常会遇到需要忽略证书认证的情况,这篇文章主要介绍了java中调用https请求忽略ssl证书认证的相关资料,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2024-10-10
  • 基于maven实现私服搭建步骤图解

    基于maven实现私服搭建步骤图解

    这篇文章主要介绍了基于maven实现私服搭建步骤图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Java使用Freemarker页面静态化生成的实现

    Java使用Freemarker页面静态化生成的实现

    这篇文章主要介绍了Java使用Freemarker页面静态化生成的实现,页面静态化是将原来的动态网页改为通过静态化技术生成的静态网页,FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输,更多相关内容需要的小伙伴可以参考一下
    2022-06-06
  • jetbrain fleet对标vscode实际操作

    jetbrain fleet对标vscode实际操作

    Gradle是一个基于Apache Ant和Apache Maven概念项目自动化构建开源工具,jetbrain家的fleet(已获得预览权限)直接对标vscode , fleet有望超过vscode吗?今天我们实际操作下
    2021-12-12
  • 解决Nacos集群启动失败:java版本问题

    解决Nacos集群启动失败:java版本问题

    这篇文章主要介绍了解决Nacos集群启动失败:java版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Springboot集成RabbitMQ并验证五种消息模型

    Springboot集成RabbitMQ并验证五种消息模型

    RabbitMQ 提供了5种常用消息模型,本文主要介绍了Springboot集成RabbitMQ并验证五种消息模型,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • springmvc与mybatis集成配置实例详解

    springmvc与mybatis集成配置实例详解

    这篇文章主要介绍了springmvc与mybatis集成配置实例详解的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • 关于junit测试需要的依赖

    关于junit测试需要的依赖

    这篇文章主要介绍了关于junit测试需要的依赖,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • SpringRetry重试框架的具体使用

    SpringRetry重试框架的具体使用

    在项目开发中,经常会遇到需要重试的地方。本文主要介绍了SpringRetry重试框架的具体使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • 关于Java中Object类的几个方法示例

    关于Java中Object类的几个方法示例

    这篇文章主要给大家介绍了关于Java中Object类的几个方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-05-05

最新评论