数据结构

常用数据结构的区别

2018-09-12  本文已影响0人  吃茶泡饭丶

Java中几种常用的数据结构主要分为Collection和Map两个接口


常用的几种数据结构.png

Collection

Collection是java集合框架体系的根接口,定义了一组对象和它子类需要实现的方法。

在 JDK 8 以后,Collection 接口还提供了从集合获取连续的或者并行流:
Stream<E> stream()
Stream<E> parallelStream()

List是有序的队列;
List中的每一个元素都有一个索引,第一个元素的索引值是0,往后的元素的索引值依次+1;
List中允许有重复的元素;

ArrayList

基于数组实现;
线程不安全只能在单线程环境下使用,多线程环境下可以考虑使用Collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类;
ArrayLis更适合读取、设置数据(get/set);

LinkedList

基于链表的数据结构
同样线程不安全
LinkedList跟适合新增、删除数据(add/remove);

Vector

基于数组实现;
vector是线程安全的;

散列集,不能保证存储元素的顺序;
与List不同Set没有重复元素的集合;
Set结构其实就是维护一个Map来存储数据,利用Map结构保证key值唯一性;

HashSet

查看源码可以知道HashSet底层使用HashMap来保存所有元素,其实就是个限制了功能的HashMap;
除了不能重复的特性外HashSet的存储是无序的;
允许使用null元素;
HashSet没有提供get()方法,同HashMap一样,Set内部是无序的,只能通过迭代的方式获得

TreeSet

底层实现TreeMap

HashMap

元素成对,元素可为空(key/value) ;
线程不安全;
HashMap的迭代器是Iterator;
单线程下比HashTable要快

HashTable

元素成对,线程安全,元素不可为空
线程安全;
HashTable的迭代器是enumerator;

上一篇 下一篇

猜你喜欢

热点阅读