美文网首页数据结构
常用数据结构的区别

常用数据结构的区别

作者: 吃茶泡饭丶 | 来源:发表于2018-09-12 00:27 被阅读0次

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


常用的几种数据结构.png

Collection

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

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

  • List

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

ArrayList

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

LinkedList

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

Vector

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

  • Set

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

HashSet

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

TreeSet

底层实现TreeMap

  • Map

HashMap

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

HashTable

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

相关文章

网友评论

    本文标题:常用数据结构的区别

    本文链接:https://www.haomeiwen.com/subject/dtypgftx.html