分享好友 最新动态首页 最新动态分类 切换频道
集合的使用
2024-12-27 23:23

一、对集合进行循环 (foreach 迭代、数组下表

ArrayList:无序(没有任何规律) 【  数组下表  > foreach 迭代 】

集合的使用

LinkList:  有序 (  前后有节点 ) 【  foreach 迭代  > 数组下表】

注释:因为迭代器 foreach 会判断有没有下一个元素 类似  a.hasenext()  , 所以更适合有序的集合遍历

二、对集合进行 插入、删除、修改操作

删除、插入      使用 LinkList

         修改        使用 ArrayList

原因在进行删除、插入操作时,LinkList 只需要改变指针指向的位置即可

          而 ArrayList 插入时,需要将每个元素后移一位,即都copy了一遍 放在被插入元素后面,同理删除会前移一位 也会都copy  

          一 遍,故频繁的删除 插入不适合用 ArrayList

          在进行修改 操作时 因为要定为元素的位置,此时涉及遍历元素,所以 ArrayList 会更好些

 

三、进行 List 集合 排序(Comparable、Comparator

实体类:

自定义 比较器

测试类 代码块

注解Comparable接口可以作为实现类的默认排序算法,Comparator接口则是一个类的扩展排序工具

  实现了Comparable接口的类  表明自身是可以比较的,有了比较才能进行排序,而Comparator接口是一个工具类接口,它的名字(比较器)也已经表明了它的作用:用作比较,它与原有类的逻辑没有关系,只是实现两个类的比较逻辑,从这方面来说,一个类可以有很多的比较器,只要有业务需求就可以产生比较器,有比较器就可以产生N多种排序,而Comparable接口的排序只能说是实现类的默认排序算法,一个类稳定、成熟后其compareTo方法基本不会变,也就是说一个类只能有一个固定的、由compareTo方法提供的默认排序算法

四、 集合 运算(并集、交集、差集

以最原始的 list1的值为准线,5条执行结果分别是

A,B,C,D,A

A

B

B

B,C,D,A

五、 集合大家族 总结

Java中的集合类实在是太丰富了,有常用的ArrayList、HashMap,也有不常用的Stack、Queue,有线程安全的Vector、HashTable,也有线程不安全的LinkedList、TreeMap,有阻塞式的ArrayBlockingQueue,也有非阻塞式的PriorityQueue等,整个集合大家族非常庞大,可以划分以下几类

  (1)、List:实现List接口的集合主要有:ArrayList、LinkedList、Vector、Stack,其中ArrayList是一个动态数组,LinkedList是一个双向链表,Vector是一个线程安全的动态数组,Stack是一个对象栈,遵循先进后出的原则。  

  (2)、Set:Set是不包含重复元素的集合,其主要实现类有:EnumSet、HashSet、TreeSet,其中EnumSet是枚举类型专用Set,所有元素都是枚举类型;HashSet是以哈希码决定其元素位置的Set,其原理与HashMap相似,它提供快速的插入和查找方法;TreeSet是一个自动排序的Set,它实现了SortedSet接口。

  (3)、Map:Map是一个大家族,他可以分为排序Map和非排序Map,排序Map主要是TreeMap类,他根据key值进行自动排序;非排序Map主要包括:HashMap、HashTable、Properties、EnumMap等,其中Properties是HashTable的子类,它的主要用途是从Property文件中加载数据,并提供方便的操作,EnumMap则是要求其Key必须是某一个枚举类型。

   Map中还有一个WeakHashMap类需要说明,  它是一个采用弱键方式实现的Map类,它的特点是:WeakHashMap对象的存在并不会阻止垃圾回收器对键值对的回收,也就是说使用WeakHashMap装载数据不用担心内存溢出的问题,GC会自动删除不用的键值对,这是好事。但也存在一个严重的问题:GC是静悄悄的回收的(何时回收,God,Knows!)我们的程序无法知晓该动作,存在着重大的隐患。

  (4)、Queue:对列,它分为两类,一类是阻塞式队列,队列满了以后再插入元素会抛出异常,主要包括:ArrayBlockingQueue、PriorityQueue、LinkedBlockingQueue,其中ArrayBlockingQueue是一个以数组方式实现的有界阻塞队列;另一类是非阻塞队列,无边界的,只要内存允许,都可以持续追加元素,我们经常使用的是PriorityQuene类。

  还有一种队列,是双端队列,支持在头、尾两端插入和移除元素,它的主要实现类是:ArrayDeque、LinkedBlockingDeque、LinkedList。

  (5)、数组:数组与集合的最大区别就是数组能够容纳基本类型,而集合就不行,更重要的一点就是所有的集合底层存储的都是数组。

最新文章
下周六开考!湖北省教育考试院发布提示
2025年全国硕士研究生招生考试(初试)将于2024年12月21日至22日举行湖北省教育考试院日前发布提示一、从容准备考试准确掌握考试时间,12月21日8:30—11:30,14:00—17:00;12月22日8:30—11:30,14:00开始。规范携带考试用品,考生只能携
王中王72396网站,高效实施方法解析_豪华版3.287
在数字营销和网站运营领域,"王中王72396网站"以其卓越的性能和用户体验而受到关注。最近,该网站推出了豪华版3.287,这一版本以其高效的实施方法而备受赞誉。以下是对这一新版本的详细解析,探讨其如何提升网站性能和用户体验。1. 网站架
威胁驱动的网络安全方法论
摘要目前的网络安全风险管理实践很大程度上是由合规性要求驱动的,这使得公司/组织不得不在安全控制和漏洞上投入人力/物力。(风险管理涉及多个方面,包括资产、威胁、漏洞和控制,并根据事故发生的可能性及造成的
云手机游戏挂机安全性哪家高?游戏挂机云手机安全分析
在当今的游戏世界中,成为了许多玩家追求便捷和高效的方式。无论是想要在睡觉时让角色持续升级,还是在忙碌时不错过游戏中的资源获取,游戏挂机都有着巨大的吸引力。然而,这其中也隐藏着诸多风险。一方面,游戏挂机可能违反游戏的使用条款
【大悟县中心】大悟县宣化店镇跨竹竿河人行景观桥工程项目大悟县宣化店镇跨竹竿河人行景观桥工程项目(HBDW-202412GL-012001001)招标公告
大悟县宣化店镇跨竹竿河人行景观桥工程项目大悟县宣化店镇跨竹竿河人行景观桥工程项目(HBDW-202412GL-012001001)招标公告招标编号:HBDW-202412GL-0120010011.招标条件本招标项目大悟县宣化店镇跨竹竿河人行景观桥工程项目已由大悟县发展和
好用的WordPress聊天机器人插件推荐
集成聊天机器人是提升客户服务的有效方式,它可以帮助更高效地与客户互动并提供卓越的用户体验。WordPress聊天机器人插件是一个软件扩展或附加组件,可让将聊天机器人或人工智能对话智能集成到WordPress网站中。在WordPress网站上使用WordP
长连接转短链接
长连接(长链接)转短链接的方法多种多样,以下是一些常见且实用的方法:1. 使用第三方短链接服务目前市场上有很多第三方短链接服务,如Bitly、TinyURL、爱短链等。这些服务通常提供简单易用的界面,用户只需将长链接粘贴到指定的输入框中
线上推广的渠道和方法(线上推广技巧解析)
引言:随着数字化时代的到来,线上推广已经成为当今商业发展的重要一环。各种推广方法层出不穷,如何在竞争激烈的市场中脱颖而出,具有许多挑战性。本文将从4个方面出发,详细阐述线上推广技巧,为推广者提供有益的指导。一、社交媒体推广1
怎么添加百度指数,百度指数的基本功能有哪些
创新互联建站导读:关于百度指数的问题,本文重点介绍了怎么添加百度指数,以及百度指数的基本功能有哪些。总之添加关键词的百度指数是很简单的,大家可以参考下本文介绍的流程,即便是SEO新手也能轻松搞定。至于百度指数的功能方面,虽然
樱花热水器维修服务热线号码全天客服电话《2024汇总》 人工智能大模型产业创新发展大会在京举办 展示前沿成果
400电话:400-965-8692(点击咨询)樱花热水器各号码《今日汇总》樱花热水器各热线号码2024已更新(2024已更新)樱花热水器维修电话:(1)400-965-8692(点击咨询)(2)400-965-8692(点击咨询)樱花热水器24小时热线(1)400-965-8692(点击
相关文章
推荐文章
发表评论
0评