Java集合汇总
1、集合接口
java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。声明了适用于JAVA集合(只包括Set和List)的通用方法。Set 和List 都继承了Conllection,Map没有.2、集合类型
JAVA集合主要分为三种类型:Set (集),List (列表),Map (映射)
Set集合:集合元素是不能重复的,元素是没有顺序的,所以它不能基于位置访问元素。
List集合: 集合元素是可以重复的,元素是有顺序的,所以它可以基于位置访问元素。
Map:它包含键值对。Map的键是不能重复的,可以保证元素的插入顺序,也可以排序。
3、集合介绍
Set (集):
HashSet
HashSet是基于HashMap实现的,它不允许出现重复元素,不保证和政集合中元素的顺序,允许包含值为null的元素,但最多只能有一个null元素。
TreeSet
TreeSet可以实现排序等功能的集合,它在讲对象元素添加到集合中时会自动按照某种比较规则将其插入到有序的对象序列中,并保证该集合元素按照"升序"排列。
LinkedHashSet
具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序),于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。
List (列表):
ArrayList
内部结构基于数组实现,可以对元素进行随机的访问,向ArrayList中插入与删除元素的速度慢。
LinkedList
LinkedList 是一个继承于AbstractSequentialList的双向链表,可以被当作堆栈、队列或双端队列进行操作。LinkedList同时还实现了List、Deque(双端队列)、Cloneable(能克隆)、java.io.Serializable(支持序列化,能通过序列化去传输)等接口,LinkedList是非同步的。
每个节点除含有元素外,还包含向前,向后的指针。
新建一个LinkedList,生成一个头节点(header,就是一个头指针),它的元素为null。
它自包含,next和previous指针都指向自己。 执行add(Object obj)方法后,会生成一个新节点
Header节点的next指向链表的第一个节点,previous指向链表的最后一个节点,在这里都是first,再增加一个对象,它的形状像下面这样。
Vector
Vector 是矢量队列,它是JDK1.0版本添加的类。继承于AbstractList,实现了List(支持相关的添加、删除、修改、遍历等), RandomAccess(随机访问功能), Cloneable(能被克隆)这些接口。
Vector实际上是通过一个数组去保存数据的。当我们构造Vecotr时;若使用默认构造函数,则Vector的默认容量大小是10。
当Vector容量不足以容纳全部元素时,Vector的容量会增加。若容量增加系数 >0,则将容量的值增加"容量增加系数";否则,将容量大小增加一倍。Vector的克隆函数,即是将全部元素克隆到一个数组中。和ArrayList不同,Vector中的操作是线程安全的。
Stack
Stack是栈,它的特性是:先进后出(FILO, First In Last Out)。
Stack继承于Vector(矢量队列)的,由于Vector是通过数组实现的,这就意味着,Stack也是通过数组实现的,而非链表。
Map (映射):
Map基于散列表的实现,Map 是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象。
HashMap
HashMap底层就是一个数组结构(叫做Entry Table),数组中的每一项又是一个链表(叫做Bucket,用于解决hash冲突而设计的)。当新建一个HashMap的时候,就会初始化一个数组。插入和查询"键值对"的开销是固定的,可以通过构造器设置容量capacity和负载因子load factor,以调整容器的性能。初始化结构如下:
每个bucket包含一个Entry(map自定义的一种结构,包含一个往后的指针)的链表。
在put(key, value)后,它的结构如下:
LinkedHashMap
类似于HashMap,但是迭代遍历它时,取得"键值对"的顺序是其插入次序,或者是最近最少使用(LRU)的次序,只比HashMap慢一点。而在迭代访问时发而更快,因为它使用链表维护内部次序。
TreeMap
基于红黑树数据结构的实现,查看"键"或"键值对"时,它们会被排序(次序由Comparabel或Comparator决定)。TreeMap的特点在于,你得到的结果是经过排序的。TreeMap是唯一的带有subMap()方法的Map,它可以返回一个子树。
WeakHashMap
弱键(weak key)Map,Map中使用的对象也被允许释放: 这是为解决特殊问题设计的。如果没有map之外的引用指向某个"键",则此"键"可以被垃圾收集器回收。
IdentifyHashMap
使用==代替equals()对"键"作比较的hash map,专为解决特殊问题而设计。
Hashtable
Hashtable与HashMap类似,Hashtable继承自Dictionary类,实现了Map接口,不同的是它不允许记录的键或者值为空;和HashMap相比,Hashtable是线程同步的,即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢。而且Hashtable可以通过Enumeration去遍历。
4、总结
List按对象进入的顺序保存对象,不做排序或编辑操作。
Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于Set,而不关心它的顺序--否则应该使用List)。
Map同样对每个元素保存一份,但这是基于"键"的,Map也有内置的排序,因而不关心元素添加的顺序。
如果添加元素的顺序对你很重要,应该使用 LinkedHashSet/TreeSet或者LinkedHashMap/TreeMap.
最后还要提到集合类里面一个很重要的类:Collections,它有很多自己独特的静态方法。当然它要提供几种特殊集合(List, Map,Set),可以调用静态方法来获得:Unmodifiable*(不可修改集合,不可添加或删除元素),Synchronize*(保持同步集合,它的基本每个方法都加锁,防止并发操作),Checked*(声明之始传入特定类型,以后的操作都会验证加入元素是否属于已定类型),Singleton*(集合中只包含一个元素)。它们都是通过包装集合类中的抽象类获得,产生不同的行为。
中国保健科技利用互联网,扬帆起航近年来,养生保健一词从中老年人专属名词渐渐变成了年轻人的风潮。据20192020中国青年消费报告显示,保健养生已跻身2020年青年人花钱排行榜前三名,仅次于教育培训住房,而在年龄划
俄媒得出结论,中国更依赖俄能源,但欧洲的现状,给中国提了个醒随着普京亲自下令将能源出口的重心自西向东转移,中俄天然气贸易就出现了飞速进展,不仅数量显著增加,相关的基础设施建设也在加速推进。为此,俄罗斯卫星通讯社日前发文称,俄罗斯天然气对中国
笔记本最佳伴侣联合创新便携显示器到手价599元文黄保霖责编吕东兴总编唐迪笔记本屏幕太小不够用?不妨再加个便携屏幕吧,小编自用款推荐到手价599元,接上笔记本就能用,还方便携带,特别实用。有笔记本电脑办公学习的同学一定不要错过了
华润电力豪掷500亿元布局新能源产业,去年逆市盈利澎湃新闻从菏泽发布获悉,山东菏泽近日与华润电力投资有限公司签署战略合作协议。根据合作协议,华润电力将投资500亿元,在菏泽规划布局新能源及配套产业,培育壮大战略性新兴产业集群。这是
广西平果电子加工产业带动10万人就业9月13日,平果市易地搬迁安置点吉祥社区的居民韦卫英走出家门,到楼下的电子厂上班。我3年前从旧城镇绿宏村搬进城里,经过培训上岗,主要负责加工电源变压器配件,按件计酬,每月收入400
穆里尼奥不是尤文争四路上的劲敌,年轻裁判不买账,阿囧命不再硬尤文输球就好像雪崩前,掉落的那朵染红的雪花,于是罗马也输球,意甲四强纷纷倒下,似乎都是约好的,莫非又要进入上赛季的,我们都是木头人,不许说话不许动的游戏环节了吗?在我看来未必!但深
回家的路上看见的,我现在很慌,该怎么办啊?哈哈哈方法都交给你了你学会了吗只要思想不滑坡方法总比困难多换了个发型气质瞬间就上来了小伙子我劝你还是放手吧这明显是打不过啊这个应该就是虎落平阳被犬欺吧大爷这操作真的把我惊到了化完妆应该怎
光影摄荟镜头里的路,路上有风景有故事有路就有风景,就有故事!身未动,心先远吧。感谢光影摄荟群的摄影人,走在路上拍摄下的这些路感谢王伟时老师精心选编感谢汤晓雯老师以下的撰文和图片编辑。(更多搜色行无戒公号)摄影图片媒体
筑梦路上石鼓山石鼓山位于陕西省渭南市临渭区阳郭镇石鼓山村之东南,北临花园,南接西安市蓝田县厚镇乡。素有鸡鸣一声听两县之说,距渭南市30多千米,系秦岭山脉所辖。石鼓山全貌石鼓山由黑花岗岩构成,以奇
Tiktok起步准备a)准备一台手机苹果手机建议iPhone6型号以上,手机容量在16GB以上,保障基础性能来运行TikTok的同时,也方便通过手机做一些简单剪辑。安卓手机建议安卓版本7。0及以上的手
秋天要多吃南瓜,教你新吃法,不炒不煮不油炸,又香又嫩超过瘾秋天要多吃南瓜,教你新吃法,不炒不煮不油炸,又香又嫩超过瘾。相信大家对南瓜都不陌生,在农村几乎家家户户都会在院子中种植南瓜,南瓜除了在成熟后可蒸着吃煮粥以外,在南瓜还很嫩的时候,人
八达岭长城有地铁站吗,八达岭站到八达岭长城多远?八达岭长城,是万里长城的组成部分,全国文明风景旅游区示范点,位于北京市延庆县军都山关沟古道北口。八达岭长城是古今中外各界人士游览的必到之所,迄今为止,已有很多位世界zhi名人士曾登
大河之南中牟县沿黄三镇美如画仲秋既过,秋分将至,自西向东,雄浑的黄河水浩浩荡荡勇往直前,义无反顾,伫立黄河大堤,眺望中牟县沿黄万滩雁鸣湖和狼城岗三镇,天高云淡,金风送爽,农民在广袤的大田里忙着收割,庄稼腾茬儿
武巴连线再度上演上海海港21战胜河南嵩山龙门上海海港VS河南嵩山龙门21今天19点30分,2022赛季中超联赛第16轮补赛,上海海港对阵河南嵩山龙门。最终,上海海港21河南嵩山龙门。上半场上海海港攻防两端都做得不错,尤其进攻
50位河南省优秀企业家获得表彰大河网讯(记者祝传鹏)九月的郑州,金风送爽丹桂飘香,一场讴歌典范礼赞楷模的盛会如约而至。9月18日上午,河南省优秀企业家表彰大会在郑州举行,获奖企业家们身披绶带胸佩红花,为丰收的金
一定要拍的油画孕妇照一定要拍的油画孕妇照详细选店拍照攻略清新复古的油画风格,优雅特别的氛围感!超喜欢这组!北京这边拍孕妇照的摄影馆琳琅满目,我自己也选得非常纠结,最后挑选出了自己满意的摄影馆,也拍到了
河南村镇银行事件的反思经历过河南村镇银行事件后,老百姓是应该好好反思一下银行这样一块金字招牌的份量了。此次事件的源头是河南几家村镇银行十数年的内外勾结!是属地银保监局十数年的监管失责!是河南省联社的主要
分享一组特别一点的孕妇照及裸拍经验分享一组特别一点的孕妇照及裸拍经验拍摄孕照周数37周5天哇R惊恐R惊恐R惊恐R很不建议学我这么大周数去拍,因为已经9个多月了,我是38周3天生的小百香。离我拍照当天仅差了几天。一般
今年10月1日后,所有央企将新增一个首席官国务院国资委日前印发中央企业合规管理办法,推动中央企业加强合规管理,切实防控风险,有力保障深化改革与高质量发展。自2022年10月1日起施行。中央企业应当结合实际设立合规首席官,不
国家发改委北京地铁平谷线的北京段河北段已同步启动建设20日上午,国家发改委举行新闻发布会介绍区域协调发展情况。对于通州区与北三县协同发展,国家发展改革委地区司副司长曹元猛介绍,北京首条跨省市地铁平谷线的北京段河北段已同步启动建设,下
扎克伯格身家缩水近5000亿!Meta股价创两年半新低,元宇宙赌错了?每经编辑郑雨航中新经纬9月20日报道称,据彭博社,脸书母公司Meta(META,股价148。02美元,市值3978。11亿美元)首席执行官马克扎克伯格布局元宇宙使他在现实世界中付出
进出口银行持续加大外贸领域信贷支持力度原标题进出口银行持续加大外贸领域信贷支持力度今年以来,进出口银行坚决落实党中央国务院决策部署,持续加大对外贸领域信贷支持力度,为助力外贸保稳提质稳住经济大盘作出了积极贡献。截至8月