我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java Collection中set与list接口的区别

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java Collection中set与list接口的区别

从本质上来说,List和Set均是接口,且继承了Collection接口。我们经常用到的ArrayList、HashSet分别是继承了List和Set接口,由于用到了泛型,在实际运用时可以指定实际的类型来使用。通常我们用它们来存储对象,当然用的比较多的还有Map,它们都提供了插入、删除和查找的接口,且支持使用Iterator。那么,List和Set之间究竟有什么区别,在使用过程中应该如何区分?

List和Set区别

(1)List和Set之间很重要的一个区别是是否允许重复元素的存在,在List中允许插入重复的元素,而在Set中不允许重复元素存在,即使插入相同元素也会进行替换。我分别对ArrayList和HashSet插入相同元素进行了验证:

HashSet hset = new HashSet();
ArrayList arrlst = new ArrayList();
 
hset.add("hello");
hset.add("hello");
 
arrlst.add("hello");
arrlst.add("hello");
 
System.out.println("hset size: "+hset.size()+" toString: "+hset.toString());
System.out.println("arrlst size: "+arrlst.size()+" toString: "+arrlst.toString());

运行结果:

b49ad310bb8f239bd5bf139f4416ae9.png

PS:看JDK源代码会看到HashSet的实现是通过HashMap来完成的。

java学习视频推荐:java入门

(2)List和Set之间另外一个很重要的区别与元素先后存放顺序有关。List是有序集合,而Set是无序集合。List会保留元素插入时的顺序,也就是说之前插入的元素的索引要比之后插入的元素的索引要小。而Set不会保留插入时的顺序。同样,来验证一下:

HashSet hset = new HashSet();
ArrayList arrlst = new ArrayList();
 
hset.add("1");
hset.add("3");
hset.add("2");
 
arrlst.add("1");
arrlst.add("3");
arrlst.add("2");
 
System.out.println("hset size: "+hset.size()+" toString: "+hset.toString());
System.out.println("arrlst size: "+arrlst.size()+" toString: "+arrlst.toString());

运行结果:

ba29355c08c2ccbef550d4e71f9258b.png

PS:ArrayList中使用对象数组来存储对象,在每次插入新的对象时会插入到size大小处;至于HashSet,前面说到是通过HashMap来实现的,存入的对象作为HashMap的key,如果key相同会替换value。当然,SortedSet(继承了Set接口)能够以指定的排序方式来保存元素。

(3)List可以通过下标来访问,而Set不能。

List接口常见实现类有ArrayList、Vector和LinkedList,而Set接口常见实现类有HashSet、TreeSet和LinkedHashSet。

更多java相关文章推荐:java入门教程

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java Collection中set与list接口的区别

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java Collection中set与list接口的区别

从本质上来说,List和Set均是接口,且继承了Collection接口。我们经常用到的ArrayList、HashSet分别是继承了List和Set接口,由于用到了泛型,在实际运用时可以指定实际的类型来使用。通常我们用它们来存储对象,当然用的比较多的还有Ma
Java Collection中set与list接口的区别
2019-12-05

java中list的set区别

List集合包括JavaList接口以及List接口的所有实现类。List集合中的元素允许重复,各元素的顺序放是对象插入的顺序。 (推荐学习:java课程)类似Java中的数组,用户可通过使用索引(元素在集合中的位置)来访问集合中
java中list的set区别
2019-01-20

Java中collection和map接口有什么区别

Java中的Collection接口和Map接口是两个不同的接口,它们有以下区别:Collection接口是最基本的集合接口,它代表一组对象的集合。它的实现类包括List、Set和Queue等。它主要用于存储和操作一组对象。Map接口也是一
2023-10-26

java中set和list的区别是什么?

Java中的集合共包含三大类,它们分别是Set(集),List(列表)以及Map(映射)。它们都处在java.util中并且都为接口。它们各自都有各自的实现类。下面给大家介绍一下set和list的区别,希望对大家有所帮助。java中set和list的区别1、重
java中set和list的区别是什么?
2020-08-03

java中接口与类的区别

概念接口(interface)在java语言中就是一个抽象类型,但接口并不是一个抽象类,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。使用方法为:implement 接口名类是描述对象的属性和方法。可
java中接口与类的区别
2016-09-24

java中list与arraylist的区别

区别:List是一个接口,而ArrayList是List接口的一个实现类。ArrayList类继承并实现了List接口。因此,List接口不能被构造,也就是我们说的不能创建实例对象,但是我们可以像下面那样为List接口创建一个指向自己的对象引用,而ArrayL
java中list与arraylist的区别
2018-04-01

c#接口与java接口的区别

1、接口中定义成员C#,如图我在接口ITest添加了一个字段n,那么vs直接就显示红色的底线,而错误就是接口不能包含字段java,如下图,编译也是报错但是并不是接口中不能包含而是缺少赋值,那么我们赋值一下再看。可以看到没有问题,也就是成员变量默认是public
c#接口与java接口的区别
2016-05-24

java map与list的区别

java map与list的区别Map(映射)Map是一种把键对象和值对象映射的集合,它的每一个元素都包含一个键对象和值对象。 Map主要有以下两个实现类:HashMap:HashMap基于散列表实现,其插入和查询的开销是固定的,可以通过构造器设置容量和负载因
java map与list的区别
2017-06-24

java中内部接口与外部接口的区别

外部接口对外部提供的接口(提供给第三方使用的接口)。例如:我们自己开发系统调用调用微信或支付宝支付接口,微信或支付宝供我们调用的接口为外部接口,外部接口需要,覆盖各种正常和异常情况。内部接口对自身系统提供的接口(供系统内部调用的接口)。一般为了尽早的介入测试,
java中内部接口与外部接口的区别
2017-06-23

java中的接口与继承的区别

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类
java中的接口与继承的区别
2019-09-03

java的vector与list区别

vector的使用连续存储结构:vector是可以实现动态增长的对象数组,支持对数组高效率的访问和在数组尾端的删除和插入操作,在中间和头部删除和插入相对不易,需要挪动大量的数据。 (推荐学习:java课程)它与数组最大的区别就是vector
java的vector与list区别
2019-02-23

java继承与接口的区别

继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。Java接口是一系列方法的声明,是一些方法特征的集合,一个接
java继承与接口的区别
2017-06-08

【Java List与Map】List<T> Map与Map List<T>的区别(126)

List<T> Map:List里面的数据类型包含Map; Map List<T>:Map里面value的数据类型包含List; 测试案例: import java.util.ArrayList;import java.util.HashM
2023-08-30

详解java中List中set方法和add方法的区别

本文主要介绍了详解java中List中set方法和add方法的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2022-11-13

Java中List与ArrayList的区别是什么

Java中List和ArrayList都是集合类的接口,但是它们之间存在一些区别。1. 继承关系:List是一个接口,而ArrayList是List的一个实现类。2. 数据结构:ArrayList是基于数组实现的,而List是一种有序的集合
2023-08-15

java中vector与list的区别是什么?

vector和list的区别 ● vector的随机访问效率高,但在插入和删除时(不包括尾部)需要挪动数据,不易操作。 ● List的访问要遍历整个链表,它的随机访问效率低。但对数据的插入和删除操作等都比较方便,改变指针的指向即可。 ● list是单向的,ve
java中vector与list的区别是什么?
2021-09-04

ethernet接口与gigabitethernet接口的区别

Ethernet接口是指传统的以太网接口,它的传输速率可以是10Mbps、100Mbps或1000Mbps(即1Gbps)。而Gigabit Ethernet接口则是指千兆以太网接口,其传输速率为1000Mbps,即1Gbps。因此,Eth
2023-09-12

Java中Runnable与Callable接口有什么区别

这篇文章主要介绍“Java中Runnable与Callable接口有什么区别”,在日常操作中,相信很多人在Java中Runnable与Callable接口有什么区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
2023-07-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录