集合的基本知识及个人理解

集合是比较难的知识点了,初次接触到集合的时候,个人感觉他就是一个装东西的物品奋斗。下图就是集合的相关架构,首先是一个Collection(不是Collections,Collection是集合类的上级接口,继承与他的接口主要有Set 和List.Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。)..然后List 和

Quene.接口和Set接口分别继承自Collection接口。大笑当然接口定义的都是抽象的方法,如果要实现他那就需要实体类去重写并继承该接口,(implements).从图中可以看到,List有两个实现类,分别是ArrayList,和LinkList,.其他的也是按部就班的解释。Map是一个抽象的接口。Map跟其他的几个接口是不同的,Map是键值对出现的,可以想象成是恋人,而Collection是单身狗,这样的化你就可以清醒的记住了。所谓键值对就是说,通过一个Key就可以找到他的值,就好比你是有对象的人,我请你对象吃饭,通过你肯定能找到你的对象吧。。 

  图中的HashMap是一个实体类而SorteMap是一个接口。TreeMap是它的一个实现类。这些可以通过查询API文档得到。我用的是1.8版本的API。

  说了这么多,其实就想表明一个问题,理解容器的架构及其相关的继承关系,由于工作中用到最多的是ArrayList,和Map,所以我也深刻的学习了一下List的接口和Map集合。

List下的ArrayList看名字就可以知道他其实是一个数组组成的集合。底层的源码也是数组。大概就是先定义一个长度为10,Object类型的数组,然后向里面添加东西,当长度不够的时候继续new一个新的数组,当然是原先数组的两倍长,这时候需要将原数组的元素拷贝到新数组,并且新的数组代替原有的数组。如此循环便可以进行数组内容的增加。我也就看了下基本的内容。对于集合元素的查找和删除的源码我并没有看,个人觉得如果不是面试或者是干嘛的,工作中会使用容器即可。ArrayList类中包含了许多的方法,基本的增删改查都包含。

LinkList顾名思义就是通过链表实现的集合。是首位相连接的。一个节点包含三个内容,上一个节点内容,当前节点所存储的元素,下一个节点的内容。首尾相连接的。讲白了就是链表的。对于LinkList链表组成的集合用的是比较少的。。

对于ArrayList和LinkList是两个是兄弟,他们之间有什么区别呢?ArrryList底层是数组,LinkList底层是链表,下面我来说一下个人对两个List的理解即分析。

ArrayList——数组:数组在查询的时候,是非常快的。通过索引检索,逐条进行索引。但是再增加和删除比较复杂,不管变动哪一个,整体都会变化。

LinkList——链表:链表在查询的时候,是非常慢的,需要通过一个节点访问下一个节点,在通过节点访问下一个节点,这样的效率是非常慢的。但是增加和删除是非常快的,只需要将中间的某一个砍断,向里面添加一个即可,而其他的就不需要动。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值