• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于java:java集合单链

java 搞代码 4年前 (2022-01-27) 30次浏览 已收录 0个评论

在最近接的我的项目中用到了很多汇合的常识,发现许多常识都遗记了,看来须要恶补一下了,毕竟根底不牢,地动山摇。

\( 数组和汇合的区别 \)

其实简略来说,数组和汇合的最大区别就是汇合的长度可变,数组长度不可变

Collection汇合(单链)

List汇合

  1. ArrayList:底层数据结构是数组,查问快,增删慢,线程不平安,效率高,能够存储反复元素。
    原理:该汇合增加元素时,首先判断本人长度是否够用,如果不够用就创立一个本身1.5倍的数组,再把原数组元素拷贝过去。数组的特点就是查问快,减少删除慢。
  1. LinkedList 底层数据结构是链表,查问慢,增删快,线程不平安,效率高,能够存储反复元素。
    原理: LinkedList汇合因为底层时链表实现的,链表的特点就是减少和删除比拟快,查问慢。
  1. Vector:底层数据结构是数组,查问快,增删慢,线程平安,效率低,能够存储反复元素。
    原理:Vector和ArrayList汇合的底层原理差不多,最大的区别就是线程是否平安。线程平安就像一扇带锁的门一样,你拜访的时候要开锁,所以执行效率就比拟低。

以上三个汇合有一些专用的办法,我以ArrayList为例,话不多说间接上代码

其中有个重要的知识点,就是泛型的常识,泛型就是指定汇合所寄存元素的类型。按上例所示Double就是ArrayList的泛型。

如果查问多,增删少就用ArrayList汇合

如果增删多,查问少就用LinkedList汇合

如果都多就用ArrayList汇合

Set汇合

  1. HashSet底层数据结构采纳哈希表实现,元素无序且惟一,线程不平安,效率高,能够存储null元素,元素的唯一性是靠所存储元素类型是否重写hashCode()和equals()办法来保障的。
  1. LinkedHashSet底层数据结构采纳链表和哈希表独特实现,链表保障了元素的程序与存储程序统一,哈希表保障了元素的唯一性。线程不平安,效率高。举了个例子来具体阐明:
  1. TreeSet底层数据结构采纳二叉树来实现,元素惟一且曾经排好序;唯一性同样须要重写hashCode和equals()办法,二叉树构造保障了元素的有序性。
    首先要解释一下compareto办法,它一个基于二叉树的排序办法:

而后再看个例题:

个别在开发的时候不须要对存储的元素排序,所以在开发的时候大多数用HashSet,TreeSet在面试的时候比拟多。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于java:java集合单链

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址