当前位置: 首页 > 编程笔记 >

Java中Set与List的关系与区别介绍

麹渊
2023-03-14
本文向大家介绍Java中Set与List的关系与区别介绍,包括了Java中Set与List的关系与区别介绍的使用技巧和注意事项,需要的朋友参考一下

两个接口都是继承自Collection.

List (inteface)

次序是List 的最重要特点,它确保维护html" target="_blank">元素特定的顺序.
--ArrayList 允许对元素快速随机访问.
--LinkedList 对顺序访问进行优化,向List 中间插入与移除的开销并不大,具有addFrist(),addLast(),getFirst,getLast,removeFirst和removeLast().这些方法使得LinkedList可当作堆栈/队列/双向队列.

Set (inteface)

存入Set 的每个元素必须唯一,不保证维护元素的次序.加入Set 的Object必须定义equals()方法
--HashSet 为快速查找而设计的Set ,存入HashSet对象必须定义hashCode().
--TreeSet  保护次序的Set ,使用它可以从Set 中提取有序序列.
--LinkedHashSet  具有HashSet的查询速度,且内部使用链表维护元素的次序.

它们之间的存储方式不一样:

TreeSet采用红黑树的树据结构排序元素.
HashSet采用散列函数,这是专门为快速查询而设计的.
LinkedHashSet内部使用散列以加快查询速度,同时使用链表维护元素的次序.

使用HashSet/TreeSet时,必须为类定义equals();而HashCode()是针对HashSet,作为一种编程风格,当覆盖equals()的时候,就应该同时覆盖hashCode().

 类似资料:
  • (1)List简介 实际上有两种List:一种是基本的ArrayList,其优点在于随机访问元素,另一种是LinkedList,它并不是为快速随机访问设计的,而是快速的插入或删除。 ArrayList:由数组实现的List。允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。 LinkedList :对顺序访问进行了优化,向List中间插入与删除的开销并不大。随机访问则相对较慢

  • 本文向大家介绍python 集合set中 add与update区别介绍,包括了python 集合set中 add与update区别介绍的使用技巧和注意事项,需要的朋友参考一下 集合set是一个无序不重复元素的集 set.add() 与set.update()的区别 补充:在python中的set操作中添加vs更新 如果我只想在集合中添加单个值,那么在python中添加和更新操作之间有什么区别. 有

  • 问题内容: 和接口之间的根本区别是什么? 问题答案: 是元素的有序序列,而元素是无序的独特列表。 有序集合(也称为序列)。该界面的用户可以精确控制列表中每个元素的插入位置。用户可以通过其整数索引(列表中的位置)访问元素,并在列表中搜索元素。 一个不包含重复元素的集合。更正式地说,集合不包含元素对e1和e2,使得e1.equals(e2)最多包含一个空元素。顾名思义,此接口对数学集合抽象进行建模。

  • 本文向大家介绍java中&与&&的区别,包括了java中&与&&的区别的使用技巧和注意事项,需要的朋友参考一下 在java中&和&&都属于逻辑运算符,都是判断两边条件为真时为真,否则则为假 在程序中&的使用: 这一段代码运行结果为:5 也就是说&逻辑运算符实际上是会吧前后两个判断条件都会执行两次,i自加了两次,出现结果为:5 这一段代码运行结果为:4 也就是说&&逻辑运算符实际上只判断了前边一个条

  • 本文向大家介绍java中volatile和synchronized的区别与联系,包括了java中volatile和synchronized的区别与联系的使用技巧和注意事项,需要的朋友参考一下 java中volatile和synchronized的区别与联系 这个可能是最好的对比volatile和synchronized作用的文章了。volatile是一个变量修饰符,而synchronized是一个

  • 本文向大家介绍LR与SVM的联系与区别?相关面试题,主要包含被问及LR与SVM的联系与区别?时的应答技巧和注意事项,需要的朋友参考一下 LR与SVM都可以处理分类问题,且一般都可以用于线性二分类问题 两个方法都可以增加不同的正则化项 区别: LR是参数模型,SVM是非参数模型(参数模型是假设总体服从某一个分布,该分布由一些参数确定,在此基础上构建的模型为参数模型,而非参数模型对于总体的分布不做假设