java集合

我们使用的数组和集合有啥区别?

1.集合可以操作数量不确定的一类数据,空间不足时会自动扩容.

2.数组时大小固定的一类数据.(基本类型/引用类型)

toArray()和Array.asList()可以互相转化.

集合:

1.collection接口

collection是最基本的集合接口,一个collection代表一组Object,即collection的元素.

遍历collection:迭代器iterator

Iterator it=collection.iterator();

while(it.hasNext()){

Object obj=it.next;

}

派生的两个子接口:list和set

list:有序的,有重复元素,和数组类似可以动态增长.查询速度快,增加或删除元素效率低,因为需要移动其他元素.

LinkList:链表,堆栈,队列

ArrayList:动态数组

set:无序的,不可以重复的,查询速度慢,增加和删除元素效率高.

hashset:以哈希表的形式存储数据.

2.map不重复的键值对映射

Map.Entry接口:map的entrySet()方法返回一个实现map.entry接口的对象集合.

HashTable,HashMap,ConcurrentHashMap的区别.

1.hashTable

1,底层结构是数组加链表,无论是key和value都不能为null.

2.线程安全,每次操作数据的时候会锁住整个HashTable,效率低

3.初始size为11,扩容:size*2+1.

.

2.ConcurrentHashMap

1.底层 数组+单向链表+红黑树

2.线程安全,每次操作数据只锁住一个桶,效率高

3.hashMap

1.底层接口:数组+链表+红黑树

2.线程不安全.

3.可以存储null值或key为null

4.初始size为16,每次扩容大小为size*2.

扩容在多线程情况下:1.7头插法会造成死循环和数据丢失.1.8解决了这两个问题但有数据覆盖的问题(哈希碰撞造成).

5.负载因子为0.75

红黑树

它不是完全平衡的二叉树,但能保证搜索操作在O(log n)的时间复杂度内完成.

特点:

1.根节点为黑色.

2.每个节点不是黑色就是红色.

3.每个子节点为黑色.

4.如果节点为红色,那它的子节点是黑色

5.从一个节点到其子节点的所有路径上包含相同的黑节点.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值