Java集合总结

目录

集合的定义

集合的分类

常用实现类讲解

List

Set

Map

Collections工具类

Iterator迭代器


集合的定义

集合和数组一样是Java中提供的一种容器,但是数组的容量是不可变的,集合的容量是可变的。

数组存储的是同类型的元素,集合存储的是对象,而且对象的类型可以不同。

集合的分类

集合分为两大类Collection和Map;

Collection是单列集合的根接口,他有两重要的子接口java.uyil.List和java.util.Set。

List:元素有序、元素可以重复的集合,主要实现类有ArrayList、LinkedList和线程安全的Vector。

Set:元素无序、元素不可重复的集合,主要实现类有HashSet(元素排列无序)和TreeSet(元素排列有序)

Map是双序列键值对集合,key不可以重复,一个key对应一个value,主要实现类有HashMap,HashTable(线程安全),TreeMap

图解

常用实现类讲解

  List

        ArrayList

                底层:数组

                特点:查询快,增删慢,用于查询遍历数据,线程不安全,有索引

                扩容方法:每次扩容数组长度是原来的1.5倍

        LinkedList

               底层:双向链表

                特点:查询慢,增删块,线程不安全,无索引

                由于是链表结构,插入新的数据时会在原来的末尾加上一个链子

        Vector

                底层:数组

                特点:查询快,增删慢,线程安全,效率低,有索引

                扩容方法:每次扩容是原来的俩倍

Set

        HashSet

                底层:jdk1.8前 哈希表(数组+链表);jdk1.8后 哈希表(数组+链表+红黑树)

                特点:查询快,元素无序,元素不可重复,无  索引

              扩容方法:每次扩容是原来的俩倍,触发线是每次扩容的0.75倍,当数组长度达到64以上,有链表长度达到8以上者向红黑树转型。本质和HashMap一样

        TreeSet

                底层:红黑树

                特点:查询快,元素排列有序,元素不可重复,无索引

                排序方式:自然排序

Map

        HashMap

        底层:jdk1.8前 哈希表(数组+链表);jdk1.8后 哈希表(数组+链表+红黑树)

        特点:查询快,元素无序,key不可重复可以为空,value可以重复

        扩容方法:每次扩容是原来的俩倍,触发线是每次扩容的0.75倍,当数组长度达到64以上,有链表长度达到8以上者向红黑树转型

        HashTable

                底层:哈希表

                特点:查询快,元素无序,key不可重复不能为空,value可以重复,线程安全

        TreeMap

                底层:红黑树

                特点:查询快,元素排列有序,key不可重复不能为空,value可以重复

                排序方式:自然排序

Collections工具类

                集合操作的常用方法

                Sort 排序

                BinarySearch 二分查找

                Copy 复制

                Reverse 反转

                Shuffle 打乱

Iterator迭代器

        Jdk提供的接口,用于遍历集合里面的元素

迭代器的使用

        List和Set方法差不多

        Map中的使用方式

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值