JAVA集合框架一些基本的知识点

                                 JAVA集合框架的一些基本的知识点

1.前言

在之前做项目的时候,很经常的用到java集合,但是大部分就是用到list和map集合,但是当了解到JAVA集合的一些东西后,就感觉之前用到的JAVA集合有很多地方可以进行优化,发一篇博客来进行记录,先上传一张总体的图片吧。

这张图片呢就是JAVA集合框架的一些基本知识点,看图就是可以懂的,但是呢还是要具体些一些自己的理解,具体呢就是有以下问题。

2.HashMap的实现原理。

HashMap呢是通过put和get来存储和获取对象,存储对象时我们会将key和value传给put方法,它会调用Hashcode来计算出hash,从而得到bucket的位置(bucket可以看做是一个容器,储存的每一个obj都会有一个自己的位置),进一步储存,HashMap会根据当前的bucket来的占用情况来调整容量。获取当前对象时,我们会将key传给get方法,它调用Hashcode来计算出hash从而得到bucket的位置,进一步调用equals方法确认键值对。

3.List、Set、Map的区别

List Set Map 可以允许重复元素 不允许重复元素 键值对存储,键必须唯一,但是值可以重复 可以插入多个null 只允许一个null 键只允许一个null,但是值可以允许多个null 有序容器,插入和输出的顺序一样 无序容器 无序容器

 

4.HashMap和HashSet的区别

HashMap HashSet 实现了map接口 实现了set接口 存储键值对 存储对象 调用put方法想map中添加元素 调用add向set中添加元素 HashMap使用key计算hashcode HashSet使用成员对象计算hashcode HashMap相对于HashSet较快,因为它是使用唯一键获取对象 HashSet相对于HashSet比较慢

 

5.HashMap、TreeMap、linkedHashMap的区别?

1.HashMap提供了最快的访问技术,没有按照明显的顺序保存元素。

2.TreeMap会按照比较结果的升序保存键。

3.按照插入键的顺序保存键,同时还保存了HashMap的保存速度。

6.ArrayList和LinkList的区别?

ArrayList和LinkList的区别
ArrayListLinkList

优点:get和set调用花费常数时间,也就是查询的速度快

 

缺点:新项的插入和现有项的删除代价昂贵,也就是添加和删除的速度慢

优点:新项的插入和现有项的删除开销很小,即添加和删除的速度快。

 

缺点:对get和set的调用花费昂贵,也就是查询的速度慢

 

7.Collection接口的remove方法和Iterator接口的remove方法有什么区别。

1.参数方面:

                    Collection接口的remove方法带参数,Iterator接口的remove方法不带参数。

2.性能方面:

                   Collection接口的remove方法必须首先找到要被删除的项,找到该项的位置采用的是单链表结构的查询,单链表结构查询效率低,必须一个个便利才能找到该对象。

                    Iterator接口的remove方法结合next方法使用,直接删除,(也就是说如果有下一项就删除,不用去找对象),相对于效率快一点。

3.容错方面:

                    在使用Iterator(迭代器)遍历时,如果使用Collection的remove方法则会报异常,会出现ConcurrentModificationException,因为集合中的对象个数会改变而Iterator内部对象的个数不会,不一致则会出现改异常。

                    在使用Iterator(迭代器)遍历时,使用Iterator的remove方法进行删除时就不会报异常,因为内部对象的个数和原来集合对象的个数会保持一致。

8.Array和ArrayList的区别。

1.ArrayList是Array的复杂版本。

2.储存的数据类型:Array只能储存相同数据类型的数据,而arrayList可以储存不同类型的数据

3.长度的可变:Array长度是固定的,而ArrayList的长度是可变的。

9.数组转换成集合的方法和集合转换成数组的方法。

1.数组转集合的方法:Arrays.asList(数组)(数组转换成集合后add和remove方法都不可以进行操作)

2.集合转数组的方法:list.toArray()

10.HashSet、TreeSet、LinkedHashSet有什么区别。

1.需要速度快的集合,使用HashSet

2.需要集合有排序功能,使用TreeSet

3.需要按照插入的顺序储存集合,使用LinkedHashSet

 到这里基本就差不多了,但是和还有一个Colletions这个类,这是一个集合助手类,里面有很对可以帮助操作集合的方法。大家可以看看

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值