常用数据结构的区别

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;

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Java集合类可用于存储数量不等的对象,并可以实现常用的数据结构如栈,队列等,Java集合还可以用于保存具有映射关...
    小徐andorid阅读 2,095评论 0 13
  • Collection ├List │├LinkedList │├ArrayList │└Vector │└Stac...
    AndyZX阅读 964评论 0 1
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,811评论 18 399
  • 左岩右岸阅读 164评论 0 3
  • 在明白断舍离要义之前,我是一个决不忍心扔衣服的家伙,当然我指的是旧衣服。 我总认为这衣服不管美丑,人家无怨无悔的服...
    东魔泰斗岚亦母阅读 161评论 0 0

友情链接更多精彩内容