问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Java五个最常用的集合类之间的区别和联系

发布网友 发布时间:2022-03-29 01:32

我来回答

2个回答

热心网友 时间:2022-03-29 03:01

常用的集合类有一下几种:
List结构的集合类:ArrayList类,LinkedList类,Vector类,Stack类
Map结构的集合类:HashMap类,Hashtable类
Set结构的集合类:HashSet类,TreeSet类
Queue结构的集合:Queue接口

HashMap和Hashtable的区别:
HashMap和Hashtable都是java的集合类,都可以用来存放java对象,这是他们的相同点
以下是他们的区别:
1.历史原因:
Hashtable是基于陈旧的Dictionary类的,HashMap是java 1.2引进的Map接口的一个现实。
2.同步性:
Hashtable是同步的,这个类中的一些方法保证了Hashtable中的对象是线程安全的,而HashMap则是异步的,因此HashMap中的对象并不是线程安全的,因为同步的要求会影响执行的效率,所以如果你不需要线程安全的结合那么使用HashMap是一个很好的选择,这样可以避免由于同步带来的不必要的性能开销,从而提高效率,我们一般所编写的程序都是异步的,但如果是服务器端的代码除外。
3.值:
HashMap可以让你将空值作为一个表的条目的key或value
Hashtable是不能放入空值(null)的

ArrayList和Vector的区别:
ArrayList与Vector都是java的集合类,都是用来存放java对象,这是他们的相同点,
区别:
1.同步性:
Vector是同步的,这个类的一些方法保证了Vector中的对象的线程安全的,而ArrayList则是异步的,因此ArrayList中的对象并不 是线程安全的,因为同步要求会影响执行的效率,所以你不需要线程安全的集合那么使用ArrayList是一个很好的选择,这样可以避免由于同步带来的不必 要的性能开销。
2.数据增长:
从内部实现的机制来讲,ArrayList和Vector都是使用数组(Array)来控制集合中的对象,当你向两种类型中增加元素的时候,如果元素的数目超过了内部数组目前的长度他们都需要扩展内部数组的长度,Vector缺省情况下自动增长原来一倍的数组长度,ArrayList是原来的50%,所以最后你获得的这个集合所占的空间总是比你实际需要的要大,所以如果你要在集合中保存大量的数据,那么使用Vector有一些优势,因为你可以通过设置集合的初始大小来避免不必要的资源开销。

总结:
1)如果要求线程安全,使用Vector,Hashtable
2)如果不要求线程安全,使用ArrayList,LinkedList,HashMap
3)如果要求键值对,则使用HashMap,Hashtable
4)如果数据量很大,又要求线程安全考虑Vector

1.ArrayList: 元素单个,效率高,多用于查询
2.Vector: 元素单个,线程安全,多用于查询
3.LinkedList:元素单个,多用于插入和删除
4.HashMap: 元素成对,元素可为空
5.HashTable: 元素成对,线程安全,元素不可为空

ArrayList
底层是Object数组,所以ArrayList具有数组的查询速度快的优点以及增删速度慢的缺点。
而在LinkedList的底层是一种双向循环链表。在此链表上每一个数据节点都由三部分组成:前指针(指向前面的节点的位置),数据,后指针(指向后面的节点的位置)。最后一个节点的后指针指向第一个节点的前指针,形成一个循环。
双向循环链表的查询效率低但是增删效率高。
ArrayList和LinkedList在用法上没有区别,但是在功能上还是有区别的。

LinkedList
经常用在增删操作较多而查询操作很少的情况下:队列和堆栈。
队列:先进先出的数据结构。
栈:后进先出的数据结构。
注意:使用栈的时候一定不能提供方法让不是最后一个元素的元素获得出栈的机会。

Vector
(与ArrayList相似,区别是Vector是重量级的组件,使用使消耗的资源比较多。)
结论:在考虑并发的情况下用Vector(保证线程的安全)。
在不考虑并发的情况下用ArrayList(不能保证线程的安全)。

面试经验(知识点):
java.util.stack(stack即为堆栈)的父类为Vector。可是stack的父类是最不应该为Vector的。因为Vector的底层是数组,且Vector有get方法(意味着它可能访问到并不属于最后一个位置元素的其他元素,很不安全)。
对于堆栈和队列只能用push类和get类。
Stack类以后不要轻易使用。
实现栈一定要用LinkedList。
(在JAVA1.5中,collection有queue来实现队列。)

Set-HashSet实现类:
遍历一个Set的方法只有一个:迭代器(interator)。
HashSet中元素是无序的(这个无序指的是数据的添加顺序和后来的排列顺序不同),而且元素不可重复。
在Object中除了有finalize(),toString(),equals(),还有hashCode()。
HashSet底层用的也是数组。
当向数组中利用add(Object o)添加对象的时候,系统先找对象的hashCode:
int hc=o.hashCode(); 返回的hashCode为整数值。
Int I=hc%n;(n为数组的长度),取得余数后,利用余数向数组中相应的位置添加数据,以n为6为例,如果I=0则放在数组a[0]位置,如果I=1,则 放在数组a[1]位置。如果equals()返回的值为true,则说明数据重复。如果equals()返回的值为false,则再找其他的位置进行比 较。这样的机制就导致两个相同的对象有可能重复地添加到数组中,因为他们的hashCode不同。
如果我们能够使两个相同的对象具有相同hashcode,才能在equals()返回为真。
在实例中,定义student对象时覆盖它的hashcode。
因为String类是自动覆盖的,所以当比较String类的对象的时候,就不会出现有两个相同的string对象的情况。
现在,在大部分的JDK中,都已经要求覆盖了hashCode。
结论:如将自定义类用hashSet来添加对象,一定要覆盖hashcode()和equals(),覆盖的原则是保证当两个对象hashcode返回相同的整数,而且equals()返回值为True。
如果偷懒,没有设定equals(),就会造成返回hashCode虽然结果相同,但在程序执行的过程中会多次地调用equals(),从而影响程序执行的效率。

热心网友 时间:2022-03-29 04:19

上网查吧,资料太多了。
Java五个最常用的集合类之间的区别和联系

ArrayList与Vector都是java的集合类,都是用来存放java对象,这是他们的相同点,区别:1.同步性:Vector是同步的,这个类的一些方法保证了Vector中的对象的线程安全的,而ArrayList则是异步的,因此ArrayList中的对象并不 是线程安全的,因为同步要求会影响执行的效率,所以你不需要线程安全的集合那么使用Array...

JAVA中的几个集合的区别在哪?

主要区别是List里面存放的内容可以重复,而Set同一对象只保留唯一的一个。因此,Map里面,提取Key集合的返回类型是Set,而提取Value集合的类型是Collection(List/Set)的父类型。 常用的有 List L---LinkedList(链表) L---ArrayList(动态数组,所有方法不同步) L---Vector(动态数组,所有方法同步) L...

java中的集合类有哪些

Set 是一种不包含重复的元素的集合。它最多包含一个 null 元素。主要的 Set 实现类有 HashSet、LinkedHashSet 和 TreeSet 等。其中 TreeSet 还可以对元素进行排序。3. Queue(队列)Queue 是一种特殊的线性表,只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。Java 中...

java有哪些集合类

Java集合类主要有以下几种:1. List(列表):包括ArrayList、LinkedList等。它们是有序的集合,可以存储重复的元素。其中,ArrayList是基于数组实现的,随机访问元素非常快;而LinkedList则是双向链表实现的,插入和删除元素更快。2. Set(集合):包括HashSet、TreeSet等。Set集合中的元素无序且不可重复。

JAVA的集合类型有哪些

1、List(有序、可重复)List里存放的对象是有序的,同时也是可以重复的,List关注的是索引,拥有一系列和索引相关的方法,查询速度快。因为往list集合里插入或删除数据时,会伴随着后面数据的移动,所有插入删除数据速度慢。2、Set(无序、不能重复)Set里存放的对象是无序,不能重复的,集合中的对象...

java集合问题

理解集合类 集合类存放于java.util包中。 集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。 集合类型主要有3种:set(集)、list(列表)和map(映射)。(1)集 集(set)是最简单的一种集合,它的对象不按特定方式排序,只是简单的把对象加入集合中...

Java集合类List/Set/Map的区别和联系

ArrayList 我管这个叫集合数组 Set 是一个接口 底下各种实现类 Map 有两种 一种 在awt下 是一个类 通常我们都用的 是util包的 这里的map 是一个接口 这三个东西内容非常多 List 可重复 Set 不可重复 map 的key 通常不会重复 map的 value可重复 map 里面 储存的实际上是entry 实例 我记得...

在Java中,什么是集合类,跟普通类有什么区别?

Set(集):集合中的对象无排列顺序,并且没有重复的对象.List(队列):集合中的对象按照索引的顺序排列,可以有重复的对象。Map(映射):集合中的每一个元素都是一对一对的,包括一个key对象,一个Value对象(一个Key指向一个Value).集合中没有重复的key对象,但是vaulue对象可以重复.集合类是进行集合操作的...

Java中Set、List、Map集合类(接口)的特点及区别。分别有哪些常用实现...

Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变;List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变;Map:适合储存键值对的数据。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、...

java中的集合分类

Java集合框架 从上面的集合框架图可以看到,Java集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection接口又有3种子类型,List、Set和Queue,再下面是一些抽象类,最后是具体实现类,常用的有ArrayList、LinkedList、HashSet、Linked...

常用的集合类有哪些 集合与集合的关系 国际单位和常用单位的区别 常用量和治疗量的区别 常用集合的表示方法 集合常用的表示方法有哪两种 常用集合的字母表示 集合与常用逻辑用语 通用和专用有什么区别
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求游戏《寂静岭》中好听的游戏配乐,最好是纯音乐 A8 6500 最高支持什么显卡 加条内存组成双通道 对游戏有多大提升... ...追了四个多月了、她也喜欢我。我们俩个在一起也上了床…但是我是... 和喜欢7年的女孩表白后女生说给她点时间,但是又没说什么时间回复我。她... 说一个人很有气质`是什么样的呢` 邢台周边地区的苹果是什么价格 太行百果园地址在哪里? ...时最后香的形状是两边低中间高,这代表什么意思呀?麻烦知..._百度知... 染色体的组成为( )A.DNA和蛋白质B.蛋白质和糖类C.基因和蛋白质D.基 ... 监控器被接入后黑屏的原因 PPT中的视频播放不了 ppt录屏中的视频为什么放不了 ppt里面的视频无法播放怎么办 华为笔记本更改密码和指纹 java集合类的JAVA集合类(介绍) 怎么写商场珠宝销售月总结 珠宝店10月份工作总结 珠宝销售个人月总结开头怎么写? 珠宝店月度会议,才做了一个月店长的我不知道月末... 求一篇一个月的工作总结只要范文,我是珠宝销售员... 珠宝销售店长长月月工作总结结尾怎么写 珠宝店半个月工作总结该怎么写 作为一名珠宝销售员,一个月来的工作总结怎么写 珠宝店写月总结 珠宝销售店长月工作总结 珠宝店月总结怎么写 珠宝店长月总结怎么写范文 珠宝店新任领班月总结报告怎么写 珠宝店月总结怎么写? 珠宝店管理员月总结怎么写? PPT视频保存后无法播放 执行小企业会计准则,稳岗补贴,会计分录如何处理? 收到税务局的退款账务应该如何处理 JAVA语言中 常用的集合有那些,它们的特点是什么? 怎么才能了解JAVA集合类?集合类是什么? 9018型袖珍收音机的输入变压器正负怎么区分 9018型收音机接收不到信号 指出9018型收音机中本振以及中低放和功率放大电路... 常见的收音机集成电路有哪些? 请教一款简单的FM集成电路收音机 求:收音机集成电路CD7640GP电路中 AFC 什么意思?... 以前的收音机有没有芯片啊?现在的收音机等等不要... 收音机上HA1151集成电路功能作用是什么? 收音机是老式分离元件的好还是集成电路的好? 哪位仁兄提供一个简易收音机的电路图,并标注下个... 电路图(收音机) altium designer中找不到TDA7088T元件和s9018三极... 谁知集成电路AN7213接线图,在一个旧收音机上发现... 请问这个收音机的电源输入线在哪?音源输出线在哪... 我要做个单管来复式收音机谁有电路图啊 不要带输入...