美文网首页程序员
身为一个合格的java开发,这些java集合的知识你得知道,写的

身为一个合格的java开发,这些java集合的知识你得知道,写的

作者: 程序员伟杰 | 来源:发表于2020-07-24 20:54 被阅读0次

数据结构

数组

(3) 数组
        特点:根据下标查找数据,查找数据速度快
        数据增删麻烦,需要建一个新的数组,还要将数组下标索引移动改变
(1) 栈   (限定仅在表尾进行插入和删除操作的线性表,允许插入和删除的一端叫
        栈顶,另一端叫栈尾)
        特点:先进后出
        压栈:存数据
        弹栈:取数据

队列

(2) 队列(单端队列、双端队列)
        特点:数据一段进,另一端出
        先进先出    

链表

(4) 链表
 
        特点:一个对象存放数据以及下一个链表的引用()指针,增删数据快,只要将
        引用指向
        删除数据的下一个对象即可
        查找数据慢,需要一个对象一个对象这样的有序查找

二叉树

(5) 红黑树(二叉树)
 
        特点:一个根节点有两个节点的有序树,按照与根节点数据的大小对比,进行存
        放数据,比它大放右,比它小放左
        查找数据速度快,一经比较可以减少半边数据的查找量,类似于二分查找

集合

Collection

(1) Collectiin  (存放单值数据)
分为两个子接口
(2)List和set接口(集合)
List接口和set接口是Collection接口的子接口
两个都是存储单值的集合类(每次存储都只能保存一个对象的数据)
List可以存放重复数据,set不可以存放重复数据

List集合

List集合接口**的实现类
(1) ArrayList(基于数组创建的容器类)
特点:数组结构,增删慢,查找快,每次扩容为原来的1.5倍
格式:
ArrayList<数据类型包装类> 引用变量名 = new ArrayList<>( )
三个构造方法

  1. 无参(创建默认长度为10的集合)
  2. 有参 (创建指定长度的集合)
  3. 传进一个Collection的对象 (List和Set的所有集合)
    提供的方法

(2) Vector(基于数组创建的容器类)
特点:数组结构,增删慢,查找快;基本与ArrayList相同,但Vector能指定每次扩容的倍数

(3) LinkdeList(双向链表结构)
特点:增删快,查找慢、可以模仿栈数据结构进行数据存储、也可以模仿单端队列数据结构存储数据、可以模仿双端队列数据结构进行数据存储

Set集合

Set集合接口只能存放不重复的数据(null也只能存放一个),使用方法基本和List相同
它的实现类有
(1)HashSet(散列存储,一种哈希表结构)(依赖HashMap实现的)
存放在HashSet的数据是无序存放的,所以在迭代出来的数据顺序和我们输入的顺序是无关的
★没有获取数据的get()方法,可以toArray转为数组或者使用迭代器Iterator进行获取
(2)TreeSet(二叉树存储数据结构)(依赖TreeMap实现的)
★TreeSet的迭代器有两种
1、 快速失败:因为树集是可以多线程访问的,当迭代器正常遍历集合长度时,外部对树集进行了增删,迭代器读取到错误的数据此时就会抛出异常ConcurrentModificationException
2、 安全失败:迭代器进行迭代时会对树集进行备份,对其备份进行迭代,此时就算数据发生了改变与原树集无关
★TreeSet的数据输出根据其数据在阿斯克码表(Unicode)的顺序输出的

Map

Map:存放两个值,一个key(不可重复),一个value,key和value存在映射关系,通
过key(相当于索引,不是有序的)找到其对应的value,对value进行增删改
★数组和Collection也有key,只不过key是系统自动生成的下标,线性有序数据0、1、2….
HashSet和TreeSet就是使用了Map的key实现了存放不重复数据的特点,它们的value都被定义为了常量
★Map的遍历,使用setKey的方法返回所有的key,在使用get(key)方法的到对应的value
★在用put(key,value)和remove(key,value)进行增删时如果key已经有对应的数据value,则返回上一个数据value;如果没有value,则返回null

HashMap

底层实现哈希表(也叫散列表)
hashCode:哈希码值
★哈希码值的计算自己定义,能让数据均匀分布即可
每个数据在哈希表的存储下标=数据的哈希值/哈希表长度取余
哈希表结构


存储过程

Iterator

Iterator    (迭代器,用于取出数据)(相当于数组遍历)

(1)Iterator:可用于迭代(遍历)Collection接口下的所有集合(List和Set)
(2) ListIterator:专门用于List集合的迭代(遍历)
★ListIterator比Iterator多了指针向上移动的方法
★Iterator的指针指向集合ArrayList.add添加的数据的上方,如果你用Iterator.add添加数据,只能在指针指向的地方插入,并且指针并不会发生移动,但集合的索引下标会发生改变

对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常

(3)forEach(增强for循环)
用于数组或者集合(Collection),本质是利用迭代器进行循环迭代
格式:
for(变量类型 变量名(相当于数组的[ i ]):数组名或者集合名){ }

最后

感谢你看到这里,看完有什么的不懂的可以在评论区问我,觉得文章对你有帮助的话记得给我点个赞,每天都会分享java相关技术文章或行业资讯,欢迎大家关注和转发文章!

相关文章

网友评论

    本文标题:身为一个合格的java开发,这些java集合的知识你得知道,写的

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