首页

文章

Java中的集合有哪些 在什么情况下使用

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

我来回答

4个回答

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

Collection:List、Set
Map:HashMap、HashTable

如何在它们之间选择

一、Array , Arrays

Java所有“存储及随机访问一连串对象”的做法,array是最有效率的一种。

1、
效率高,但容量固定且无法动态改变。
array还有一个缺点是,无法判断其中实际存有多少元素,length只是告诉我们array的容量。

2、Java中有一个Arrays类,专门用来操作array。
arrays中拥有一组static函数,
equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。
fill():将值填入array中。
sort():用来对array进行排序。
binarySearch():在排好序的array中寻找元素。
System.arraycopy():array的复制。

二、Collection , Map

若撰写程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。

1、Collection 和 Map 的区别

容器内每个为之所存储的元素个数不同。
Collection类型者,每个位置只有一个元素。
Map类型者,持有 key-value pair,像个小型数据库。

2、各自旗下的子类关系

Collection
--List: 将以特定次序存储元素。所以取出来的顺序可能和放入顺序不同。
--ArrayList / LinkedList / Vector
--Set : 不能含有重复的元素
--HashSet / TreeSet
Map
--HashMap
--HashTable
--TreeMap

3、其他特征

* List,Set,Map将持有对象一律视为Object型别。
* Collection、List、Set、Map都是接口,不能实例化。
继承自它们的 ArrayList, Vector, HashTable, HashMap是具象class,这些才可被实例化。
* vector容器确切知道它所持有的对象隶属什么型别。vector不进行边界检查。

三、Collections

Collections是针对集合类的一个帮助类。提供了一系列静态方法实现对各种集合的搜索、排序、线程完全化等操作。
相当于对Array进行类似操作的类——Arrays。
如,Collections.max(Collection coll); 取coll中最大的元素。
Collections.sort(List list); 对list中元素排序

四、如何选择?

1、容器类和Array的区别、择取
* 容器类仅能持有对象引用(指向对象的指针),而不是将对象信息copy一份至数列某位置。
* 一旦将对象置入容器内,便损失了该对象的型别信息。

2、
* 在各种Lists中,最好的做法是以ArrayList作为缺省选择。当插入、删除频繁时,使用LinkedList();
Vector总是比ArrayList慢,所以要尽量避免使用。
* 在各种Sets中,HashSet通常优于HashTree(插入、查找)。只有当需要产生一个经过排序的序列,才用TreeSet。
HashTree存在的唯一理由:能够维护其内元素的排序状态。
* 在各种Maps中
HashMap用于快速查找。
* 当元素个数固定,用Array,因为Array效率是最高的。

结论:最常用的是ArrayList,HashSet,HashMap,Array。

注意:

1、Collection没有get()方法来取得某个元素。只能通过iterator()遍历元素。
2、Set和Collection拥有一模一样的接口。
3、List,可以通过get()方法来一次取出一个元素。使用数字来选择一堆对象中的一个,get(0)...。(add/get)
4、一般使用ArrayList。用LinkedList构造堆栈stack、队列queue。

5、Map用 put(k,v) / get(k),还可以使用containsKey()/containsValue()来检查其中是否含有某个key/value。
HashMap会利用对象的hashCode来快速找到key。
* hashing
哈希码就是将对象的信息经过一些转变形成一个独一无二的int值,这个值存储在一个array中。
我们都知道所有存储结构中,array查找速度是最快的。所以,可以加速查找。

发生碰撞时,让array指向多个values。即,数组每个位置上又生成一个梿表。

6、Map中元素,可以将key序列、value序列单独抽取出来。
使用keySet()抽取key序列,将map中的所有keys生成一个Set。
使用values()抽取value序列,将map中的所有values生成一个Collection。

为什么一个生成Set,一个生成Collection?那是因为,key总是独一无二的,value允许重复

参考资料: http://blog.163.com/xyz_1112/blog/static/386944022007113032941347/

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

List : 存放有序可重复的元素
set : 存放无序不可重复的元素
map : 存放key-value形式的元素,其中所有的key组成一个set集合,所有的value组成一个List集合

热心网友 时间:2022-03-29 05:54

List verctor :
set : 数学集合那样的
map : key-value形式的
以上是经常用到了。

热心网友 时间:2022-03-29 07:45

自己看书就可以解决
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 被事业单位辞退之后,还能考公吗? 事业单位的临时工,被辞退会有什么补偿 劳动法关于事业单位辞退员工该有哪些补偿? 事业编被开除社保怎么办 事业单位或者行政单位编外的,被辞退,会影响公考吗? 事业单位在编长期不在岗的专业技术人员辞退有补偿吗? 在事业单位 辞职说是要赔违约金 如果因旷工被辞退... 事业单位辞退员工怎么补偿? 事业单位职工被辞退后,能去编办销编吗? 事业单位人员辞退制度是怎样的? 事业单位在编人员被辞退,有补偿吗 被事业单位辞退有什么后果 事业单位被辞退和解聘有区别吗? 事业单位在编职工半年没上班被单位辞退有补偿金吗? 事业编制人员被单位辞退 有什么补偿吗 事业编会不会被辞退 事业单位辞退员工补偿标准 事业单位辞退员工有什么规定 事业单位会因为什么原因被辞退 朴信惠的下一部剧是什么 java有哪些有序集合? 生活垃圾焚烧后,产生的烟气中主要污染物有哪些 垃圾焚烧炉在焚烧垃圾时有污染物产生吗? 垃圾焚烧厂的主要大气污染问题有哪些? 垃圾焚烧产生的污染物的含量。答得好一定多加分呀... 垃圾焚烧炉焚烧垃圾会产生污染吗? 垃圾焚烧会污染环境吗 老山是中国的还是越南的? 网上都说老山属于越南了,到底云南老山现在是中国... 云南老山属于哪个市 老山战役是哪一年? 老山在哪里? 老山是中国的还是越南 当年的老山战役的老山已划归了越南,是真的吗 中越自卫反击战曾经过老山,具体位置是在哪? 南京老山海拔高度 中越自卫反击战老山在哪个城市 老山前线是什么战争? 老山精神是什么? 老山战役哪年开始打的?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com