java.util.Collection源码的示例分析

发布时间:2021-09-09 09:58:45 作者:小新
来源:亿速云 阅读:103

这篇文章主要为大家展示了“java.util.Collection源码的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java.util.Collection源码的示例分析”这篇文章吧。

明确一下几点:

java.util.Collection源码的示例分析    

Java.util.List接口(有序、不唯一)

   ArraryList

java.util.Collection源码的示例分析       

  ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。ArrayList是非同步的,效率高但是线程不安全,Collections.sychromiziedList(new ArraryList<>());可以让那个ArrayList变成线程安全类

   LinkedList

java.util.Collection源码的示例分析  

  LinkedList是一个双向循环列表队列

   Vector

底层是数组,现在已少用,被ArrayList替代,原因有两个:

  总的来说:查询多用ArrayList,增删多用LinkedList。

  ArrayList增删慢不是绝对的(在数量大的情况下,会有例外):

  但一般来说:增删多还是用LinkedList,因为上面的情况是极端的~

Java.util.Set接口(无序、唯一)

                                  |——SortedSet接口——TreeSet实现类

               Set接口——|——HashSet实现类               

                                   |——LinkedHashSet实现类

  hashSet

  hashSet底层基于hashMap实现,如图

java.util.Collection源码的示例分析

  hashSet中的add()方法,是将对象E放入hashMap中的key的位置,value位置存放的是一个固定的Object,如图:

java.util.Collection源码的示例分析

java.util.Collection源码的示例分析  

HashSet是无序唯一的,当元素为自定义对象时,两者的hashCode不同,被认为是不同的元素从而被允许放入HashSet中,但这不符合实际的生产意义,因此需要让其判定位相等,就要重写hashCode() ,然而重写HashCode() ,会出现重码的bug,因此需要重写equals()来解决

  添加元素的时候,如果key(也对应的Set集合的元素)相等,那么则修改value值。而在Set集合中,value值仅仅是一个Object对象罢了(该对象对Set本身而言是无用的)。

也就是说:Set集合如果添加的元素相同时,是根本没有插入的(仅修改了一个无用的value值),从源码(HashMap)中也看出来,==和equals()方法都有使用,具体过程如下

  TreeSet

   与HashSet是基于HashMap实现一样,TreeSet同样是基于TreeMap实现的。

TreeSet是SortedSet接口的唯一实现类,TreeSet可以确保集合元素处于排序状态。TreeSet支持两种排序方式,自然排序 和定制排序,其中自然排序为默认的排序方式。向  TreeSet中加入的应该是同一个类的对象。

  LinkedHashSet 

   LinkedHashSet是HashSet的一个“扩展版本”,HashSet并不管什么顺序,不同的是LinkedHashSet会维护“插入顺序”。HashSet内部使用HashMap对象来存储它的元素,而LinkedHashSet内部使用LinkedHashMap对象来存储和处理它的元素

以上是“java.util.Collection源码的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. SQLite源码仓库的示例分析
  2. mysql源码示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:PHP服务器的架设技巧

下一篇:怎么通过重启路由的方法切换IP地址

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》