java数据集合总结_JAVA集合总结

一、接口继承关系图如下

96f047c2359df8ce12b52d042ce32fee.png

1.Collection:Collection是集合List、Set、Queue的最基本接口。

2.Iterator:迭代器,可以通过迭代器遍历集合中的数据。

3.Map:是映射表的基础接口。

二、List

Java的list是很常用的数据类型。List是有序的Collection。Java List有三个实现类:Arraylist、Vector、LinkedList。

Arraylist(数组):

●Arraylist的内部是通过数组实现的,它允许对元素进行快速随机访问。

●Arraylist适合随机查找和遍历,不适合插入和删除。当从Arraylist的中间位置插入和删除元素时,需要对数组进行复制、移动等操作,代价比较高,所以不适合进行插入和删除操作。

●ArrayList是线程不安全的。

Vector(数组实现、线程同步):

●Vector也是通过数组实现的。

●Vector是线程安全的。Vector支持线程同步,即某一时刻只有一个线程能够写Vector,这样可以避免多线程同时写而引起的不一致性,但是实现同步的代价很高,所以访问速度比ArrayList慢。

LinkedList(链表):

●LinkedList是用链表结构存储数据的,所以很适合数据的动态插入和删除,但是随机访问和遍历的速度慢。

●LinkedList是线程不安全的。

二、Set

Set用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复。对象的相等性本质是对象的hashCode值(java是依据对象的内存地址计算出的序列号)判断的。如果想让两个不同的对象视为相等的,就必须覆盖Object的hashCode方法和equals方法。

HashSet(Hash值):

●底层用hash表实现。HashSet存储元素的顺序不是按照存入的顺序,而是按照哈希值来存的。所以取数据也是按照哈希值取得。

●元素的哈希值是通过元素的hashcode方法获取的:hashset先判断两个元素的哈希值,如果哈希值一样,会接着比较equals方法,如果equals结果为true,hashset就视为同一个元素,否则就不是。

●HashSet通过hashcode值来确定元素在内存中的位置,一个hashcode位置上可以存放多个元素。

TreeSet(二叉树):

●TreeSet()是使用二叉树的原理对新add()的对象按照指定的顺序排序,每增加一个对象都会进行排序,将对象插入二叉树的指定位置。

●TreeSet是通过排序存储,Integer和String对象都可以进行默认的TreeSet排序,自定义类的对象是不可以的,必须实现Comparable接口,并且覆盖相应的comparaTo()函数才可以正常使用。

●在覆写compara()函数时,要返回相应的值才能使TreeSet按照一定的规则来排序。

●比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。

LinkedHashSet(HashSet+LinkedHashMap):

●LinkedHashSet底层是LinkedHashMap保存所有元素,又继承与HashSet,其所有方法的操作又与HashSet相同。

●LinkedHashSet采用hash表存储,并用双向链表记录插入顺序。

三、Queue

相当于在两端出入的List,所以也可以用数组或链表来实现。

四、Map

HashMap(数组+链表+红黑树):

●HashMap根据键的hashcode值存储数据,所以底层是哈希表。

●HashMap最多只允许一条记录的键为null,允许多条记录的值为null。

●HashMap线程不安全,即任一时刻可以有多个线程同时写HashMap。如果需要满足线程安全,可以用Collections的synchronizedMap方法使HashMap具有线程安全的能力。

HashTable:

●底层是哈希表。

●HashTable的key和value都不允许为null。

●HashTable是线程安全的。

TreeMap:

●底层是二叉树。

●TreeMap的键不可重复,值可以重复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值