美文网首页
集合(容器)

集合(容器)

作者: 小偏离 | 来源:发表于2020-05-21 17:20 被阅读0次

集合有两个分支,一是Collection   另一个是Map

Collection的子类有Set ,  List  

List:
 ----arrayList  底层通过数组实现, 带索引,但是一旦改动数据就会使数据重新排序,所以优点是查询快,缺点是增删慢
-----linkedLIst 底层通过链表实现,通过下标实现排序,优缺点正好与arraylist相反
-----vector 线程安全的集合

(ArrayList 补充) : arraylist 初始长度默认是10 , 每次扩容默认扩原来的1.5倍
(linkedLIst  补充):     

        linkedList底层是双向链表,每一个元素都有三部分,头,中,尾  .   头指向上一个元素,尾部指向下一个元素,头指向为空的元素,就是第一个元素,尾部指向元素为空的,就是最后一个元素,

        增删快的原因: 删除元素后,只需要改变上一个元素的尾部指向,跟下一个元素的头部指向,不需要移动链表

        查询慢的原因: 链表要查询某个位置上的元素,需要通过下标一个个找,效率低下.

Set: hashSet底层实际就是一个HashMap,通过hashmap的key值不能重复的特点实现set的元素唯一性,map的value值存的都是new Object();

        treeSet: treeSet底层就是一个treeMap;

Map

HashMap HashMap 的优点是 :结合了arraylist跟linkedList的优点,既查询快,增删也快

实现原理 : hashmap是基于哈希表实现的。如上图, map在调用put的时候,会将key的哈希码取出,将key进行算法运算后分配到entry[] 数组中相应的位置, 如:HashMap默认长度为16(当使用量达到75%时,会进行扩容到原来的两倍),索引值为hashCode%16的方式(效率最低的算法是hashCode/hashCode, 即退化成一个单向链表),当确定索引后,会将数据以链表形式存入数组,(   hash|key |  value |  next     ) , jdk8以后,当链表长度大于8,会转换为红黑树,进而增加查询效率

取数据的实现如下图

HashTable: hashTable 基本与hashMap相似,但是hashTable是线程安全的,效率较低,并且hashTable是不允许key跟value为null的

TreeMap: treeMap是基于红黑二叉树实现的,是可排序的map集合,如果是对象需要排序,对象需要实现Comparable接口,并重写 CompartTo方法实现排序

相关文章

  • 集合(容器)

    集合有两个分支,一是Collection 另一个是Map Collection的子类有Set , List Lis...

  • 关于集合

    一、为什么会出现集合类 1.集合是一个容器,为了方便的对多个对象进行操作。 2.集合容器同数组容器的...

  • STL--vector、deque、list、set、map、s

    vector(向量容器) deque(双端队列容器) list(链表容器) set(集合容器) map(映射容器)

  • Collection集合

    集合概述 集合和数组都是容器,他们有什么去别的? 集合和数组都是容器,可以存储多个数据 数组的长度是固定的。集合的...

  • 【数据类型】17、容器类型:集合

    一、标签的容器二、创建一个集合三、更新一个集合四、访问集合中的元素五、集合的运算六、什么时候用集合 一、标签的容器...

  • 2020-09-29集合和字符串及作业

    day7-集合和字符串 集合 什么是集合集合是容器型数据类型,将{}作为容器的标志,里面多个元素用逗号隔开:{元素...

  • 编程体系结构(03):Java集合容器

    本文源码:GitHub·点这里 || GitEE·点这里 一、集合容器简介 集合容器是Java开发中最基础API...

  • Kevin Learn Kotlin:数据容器(集合)

    容器是用于存放数据的载体。容器分为数据、集合。 Kotlin 集合 各种集合对于解决问题都具有重要意义,并且经常用...

  • 标准模板库STL

    容器:管理特定类型的对象的集合。 迭代器:迭代对象集合的元素。屏蔽了底层容器的实现。 算法:操作对象集合的元素,查...

  • Java知识梳理 | 详析三大集合类(附实用例程 + 实践练习题

    1. 集合类概述 1.1. java.util包中提供了一些集合类,这些集合类又被称为容器。 1.2. 关于容器,...

网友评论

      本文标题:集合(容器)

      本文链接:https://www.haomeiwen.com/subject/bjyrmhtx.html