java 集合包_Java 集合包一些性质

🍊Java集合包 一些性质和问题总结

框架

collection1.png

collection2.png框架

- Collection

1. ListArraylist:数组(查询快,增删慢 线程不安全,效率高 )

Vector:数组(查询快,增删慢 线程安全,效率低 )

LinkedList:链表(查询慢,增删快 线程不安全,效率高 )

2. SetHashSet(无序,唯一):哈希表或者叫散列集(hash table)

LinkedHashSet:链表和哈希表组成 。 由链表保证元素的排序 , 由哈希表证元素的唯一性

TreeSet(有序,唯一):红黑树(自平衡的排序二叉树。)

- MapHashMap:基于哈希表的Map接口实现(哈希表对键进行散列,Map结构即映射表存放键值对)

LinkedHashMap:HashMap 的基础上加上了链表数据结构

HashTable:哈希表

TreeMap:红黑树(自平衡的排序二叉树)

HashMap和HashSet区别

a. HashMap实现了Map接口,HashSet实现了Set接口

b.HashMap存储键值对,HashSet存储对象

c.HashMap调用put()向map中添加元素,HashSet调用add()像set中添加元素

d.HashMap使用Key计算hashcode,HashMap使用成员计算Hashcode

HashMap和HashTable有何不同

(1)HashMap同意key和value为null。而HashTable不同意。

(2)HashTable是同步的,而HashMap不是。所以HashMap适合单线程环境,HashTable适合多线程环境。

(3)在Java1.4中引入了LinkedHashMap,HashMap的一个子类,假如你想要遍历顺序,你非常easy从HashMap转向LinkedHashMap,可是HashTable不是这种。它的顺序是不可预知的。

(4)HashMap提供对key的Set进行遍历。因此它是fail-fast的。但HashTable提供对key的Enumeration进行遍历,它不支持fail-fast。

(5)HashTable被觉得是个遗留的类。假设你寻求在迭代的时候改动Map,你应该使用CocurrentHashMap。

ArrayList和Vector有何异同点

1) Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。

2) 当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。

ArrayList 扩容

首先,定义默认初始容量,为10

扩容方法:>>位运算,右移动一位。 容量相当于扩大了1.5倍;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值