快8彩票平台

欢迎光临北大青鸟佛山华大校区,了解更多关于课程学费等请咨询在线老师!

我的位置: 快8彩票平台 >>java集合详解

java集合详解

2019-09-17

来源:佛山北大青鸟华大校区

1.java集合框架的层次结构

Collection接口: 

       Set接口:

            HashSet具体类

            LinkedHashSet具体类

            TreeSet具体类

       List接口:  
            ArrayList具体类

            LinkedList具体类

            向量类Vector具体类

            Stack具体类

Map接口: 
       HashMap类

       LinkedHashMap类

       TreeMap类  

2.详解

HashSet

HashSet是Set接口的一个子类,主要的特点是:里面不能存放重复元素,而且采用散列的存储方法,所以没有顺序。这里所说的没有顺序是指:元素插入的顺序与输出的顺序不一致。

ArrayList

ArrayList是List的子类,它和HashSet想法,允许存放重复元素,因此有序。集合中元素被访问的顺序取决于集合的类型。如果对ArrayList进行访问,迭代器将从索引0开始,每迭代一次,索引值加1。然而,如果访问HashSet中的元素,每个元素将会按照某种随机的次序出现。虽然可以确定在迭代过程中能够遍历到集合中的所有元素,但却无法预知元素被访问的次序。

ListIterator

ListIterator是一种可以在任何位置进行高效地插入和删除操作的有序序列。

HashMap

HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。值得注意的是HashMap不是线程安全的,如果想要线程安全的HashMap,可以通过Collections类的静态方法synchronizedMap获得线程安全的HashMap。


3.常见的问题

Vector和ArrayList

1,vector是线程同步的,所以它也是线程安全的,而arraylist是线程异步的,是不安全的。如果不考虑到线程的安全因素,一般用arraylist效率比较高。

2,如果集合中的元素的数目大于目前集合数组的长度时,vector增长率为目前数组长度的100%,而arraylist增长率为目前数组长度的50%。如果在集合中使用数据量比较大的数据,用vector有一定的优势。

3,如果查找一个指定位置的数据,vector和arraylist使用的时间是相同的,如果频繁的访问数据,这个时候使用vector和arraylist都可以。而如果移动一个指定位置会导致后面的元素都发生移动,这个时候就应该考虑到使用linklist,因为它移动一个指定位置的数据时其它元素不移动。

ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要涉及到数组元素移动等内存操作,所以索引数据快,插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项的前后项即可,所以插入数度较快。


Arraylist和Linkedlist

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。

2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。

3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。这一点要看实际情况的。若只对单条数据插入或删除,ArrayList的速度反而优于LinkedList。但若是批量随机的插入删除数据,LinkedList的速度大大优于ArrayList. 因为ArrayList每插入一条数据,要移动插入点及之后的所有数据。


HashMap与TreeMap

1、 HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。

2、在Map 中插入、删除和定位元素,HashMap是最好的选择。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。使用HashMap要求添加的键类明确定义了hashCode()和 equals()的实现。

两个map中的元素一样,但顺序不一样,导致hashCode()不一样。

同样做测试:

在HashMap中,同样的值的map,顺序不同,equals时,false;

而在treeMap中,同样的值的map,顺序不同,equals时,true,说明,treeMap在equals()时是整理了顺序了的。


HashTable与HashMap

1、同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的。

2、HashMap允许存在一个为null的key,多个为null的value 。

3、hashtable的key和value都不允许为null。

开班信息

开班课程 人数 了解详情
名企定向班 剩余名额3
ACCP8.0软件班 剩余名额8
短期冲刺班 剩余名额2
项目精英班 剩余名额1
NET重点班 剩余名额6
软件开发精英班 剩余名额2
JAVA特招班 剩余名额10

免费试听

试听课程 了解详情
名企定向班
ACCP8.0软件班
短期冲刺班
项目精英班
NET重点班
软件开发精英班
JAVA特招班

姓名:

电话:

最新就业

姓名 就业岗位 就业企业
占乐乐 软件工程师 关务通网络科技公司
张浩峰 软件工程师 嘉域网络科技有限公司
卜锡龙 软件工程师 必应科技有限公司
梁嘉嘉 软件工程师 林氏木业
何伟煊 java工程师 金政信息科技
张雅涵 NET工程师 国贸集团股份有限公司
张默 项目组长 极宇舟天有限公司
张婧涵 NET工程师 大族激光有限公司
张洪文 NET工程师 诚迈科技有限公司
王玥婷 java技术顾问岗位 百纳威尔有限公司
王鸿轩 Java开发岗位 爱卡智能
邓安志 美的集团
何浚宏 东和科技有限公司
黄隆 建发股份公司
刘应琴 国美集团
刘雨林 java工程师 唯品会科技有限公司
彭子昂 Java开发 爱卡智能有限公司

在线答疑更多++

  • 快8彩票平台

  • 快8彩票平台

  • 快8彩票平台

热门专题更多++

  • 佛山华大校区
  • 厦门华大职业教育
  • 福州华大IT学院
  • 厦门课工场
  • 北大青鸟佛山华大校区
  • 地址:广东省佛山市禅城区佛山大道北143号
  • 乘车路线:张槎路口站、白燕公园站、轻工路口站、金沙新城南门站
  • 招生电话:0757-88726000    4006-989-522
  • 网址:
  • 北大青鸟厦门华大职业皎月学院
  • 地址:厦门市集美区天阳路1-7号
  • 乘车路线:孙厝、永祥花园、第二医院、霞梧路口站
  • 招生电话:0592-5920811    4000-470-150
  • 网址:
  • 福州华大IT学院
  • 地址:福州市仓山区北园路122号
  • 乘车路线:白湖亭站、下濂站、埔垱站
  • 招生电话:0591-87880522    400-9966-370
  • 网址:
  • 北大青鸟厦门课工场
  • 地址:厦门市集美区天阳路1-7号
  • 乘车路线:孙厝、永祥花园、第二医院、霞梧路口站
  • 招生电话:0592-5920811    4000-470-150
  • 网址:
  • 技术支持:
  • 备案号:
  • 版权所有:佛山市禅城区华大计算机职业技能培训学校

北大青鸟华大校区微信公众平台

北大青鸟华大校区收款码