JAVA集合类

集合类又称为容器。

集合类与数组的不同之处:

1.数组长度固定,集合长度可变。

2.数组保存的必须是同一类型的元素,集合可以任意类型。

3.数组增加删除元素比较麻烦,集合代码比较简洁。

Collection

Set 接口和 List 接口实现了 Collection 接口

遍历方式:

1.迭代器

2.集合增强for

3.有些可以用普通for

Set 接口:Set集合不允许存在重复值,无序无索引

实现:HashSet、TreeSet、LinkedHashSet

HashSet:元素无序唯一,结构为哈希表,内部实现为HashMap

        HashMap:数组+链表+红黑树

        扩容机制:链表元素个数超过默认值(8) 且 表的大小大于默认大小(64)进行树化

                          初始表的大小为16,加载因子为0.75,阈值为12

        LinkedHashSet:HashSet的子类,底层是数组+双向链表,存放的是Entry类型对象

TreeSet:元素有序唯一,结构为二叉树

List 接口:线性方式存储对象,有序,可以通过对象的索引来操作对象,可以包含重复对象

常见实现:ArrayList、LinkedList、Vector

ArrayList:可变数组,允许所有元素,包括null,适合快速的随机访问,线程不安全

                  底层:维护一个transient Object[]数组

                  扩容机制:如果是无参构造,第一次添加扩容为10,以后为1.5倍

                                    如果是有参构造,初始容量为指定大小,以后也为1.5倍

Vector:底层也是数组,线程安全,扩容与Array不同的是后期按照2倍扩容,效率不如Array

LinkedList:实现双向链表和双端队列特点,便于插入和删除,线程不安全,增删效率较高,改查效率较低

Map 接口:提供了将键映射到值的对象。每个键最多只能映射到一个值(重复替换)。

遍历方式:

1.取出Key,通过Key取出Value

        增强for

        迭代器

2.把所有的value取出

        增强for

        迭代器

3.通过EntrySet获取

        增强for

        迭代器

实现:HashMap、TreeMap、HashTable

TreeMap:红黑树实现,有序,不允许键为null,

HashMap:基于哈希表的Map接口的实现,允许null值和null键,线程不安全

        为了方便遍历,在entrySet中定义了类型Map.Entry,实际存放Node类型

HashTable:继承字典类,键值都不允许为空,底层有一个entry初始大小为11。线程安全。

        扩容机制:初始为11,之后每次2倍+1

        Properties:HashTable的子类,可以用于从xxx.properties文件中加载propertie对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值