分享好友 最新动态首页 最新动态分类 切换频道
集合的使用
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)、数组:数组与集合的最大区别就是数组能够容纳基本类型,而集合就不行,更重要的一点就是所有的集合底层存储的都是数组。

最新文章
流量爆发指南,24节攻略揭秘热门打造秘诀
《搭建24节流量攻略》揭秘热门打造秘籍,涵盖24个实战技巧,助你快速提升流量,掌握核心策略,成为热门的秘密武器。搭建24招流量攻略随着互联网的深入普及,企业和个人越来越认识到的重要性,一个出色的不仅能够提升企业的品牌形象,还能带
如何使用可视化管理工具DockerUI远程管理docker容器
DockerUI是一个docker容器镜像的可视化图形化管理工具。DockerUI可以用来轻松构建、管理和维护docker环境。它是完全开源且免费的。基于容器安装方式,部署方便高效,浏览和维护docker单节点或集群节点worker和manager。DockerU
嘉兴SEO优化推广,企业品牌影响力提升与市场占有率抢占之道
嘉兴搜索引擎优化推广服务,致力于帮助企业提升品牌知名度和市场竞争力,通过精准策略抢占市场份额,实现业务增长。随着互联网的飞速发展,搜索引擎已成为人们获取、了解企业的重要渠道,在众多搜索引擎中,百度以其庞大的用户群体和市场份
远大智能涨0.00%,成交额9.85亿元,后市是否有机会?
12月13日,(维权)涨0.00%,成交额9.85亿元,换手率18.35%,总市值53.00亿元。根据AI大模型测算远大智能后市走势。短期趋势看,该股当前无连续增减仓现象,主力趋势不明显。主力没有控盘。中期趋势方面,下方累积一定获利筹码。近期该股有
虐心说说朋友圈
虐心说说朋友圈30句精选  假如我不变的更好,我拿什么要你懊悔。下面是小编为大家推荐的虐心说说朋友圈,希望对你有所帮助。1、喜欢你就像童年的玩具,多年以后,也许会忘记,也许会回忆。2、你离我那么远,我只能傻傻地望着你的背影,什
Win7优化大师 1.80
Windows7优化大师(Windows7 Master),是国内外第一批通过微软官方Windows7徽标认证,内置微软官方许可数字签名证书,是目前国内Win7系统下用户第一的优化设置类软件,完美支持64位和32位的Windows7各个版本。Windows7优化大师基于成熟完
郑州搭建入门指南,轻松打造个性化
郑州搭建软件教程助您轻松入门,快速打造个性化。本教程涵盖基础操作,让您从零开始,一步步构建属于您的。掌握关键步骤,轻松实现定制化,提升品牌形象。郑州搭建软件概述郑州搭建软件使用指南优化与推广方法在互联网高速发展的今天,建设
赤峰分享关键词优化收费是怎样来定的(珠海关键词优化收费)
今天让小编香肠给大家介绍关于赤峰分享关键词优化收费是怎样来定的(珠海关键词优化收费)相关内容,希望对大家有所帮助。很多的人咨询优化收费是怎样来定的,那么,下面就由小编为大家介绍一下。关键词优化收费是怎样来定的,小编介绍以下
湖南长沙:加强知产司法保护 服务创新驱动发展
   “真没想到审查完的案件当天就能收到裁定书,要为长沙知识产权法庭的高效点赞!”3月18日,一起侵犯外观设计专利权案的双方当事人在经芙蓉区知识产权局、长沙知识产权保护中心行政调解后,向湖南省长沙市中级人民法院请求司法确认,
上海软件开发公司排行榜前十,实地落实_资料版4545
上海软件开发公司排行榜前十名已出炉,本资料版4545对其实地考察
相关文章
推荐文章
发表评论
0评