java容器-全览

1.Collection全览-非线程安全的实现类

  

接口简介

Iterable:迭代器接口,用于遍历数据。foreach或者iterator。

Collection:集合,java容器大部分集合的父类接口。java集合分两派,一派是Collection(只存储值的容器),一派是Map(存储键值对的容器)

List:顺序写数据的数组容器,内存连续(jvm层面)

Queue:先进先出(FIFO)队列,入队出队操作都有两种实现(一种是失败抛异常,一种是返回null或者false),不能写入null

Deque:double ended queue(双端队列),不在是FIFO,前后都可以插入删除,不能从中间操作,不能写入null

Set:用于存放非重复元素的集合,可以插入null

SortedSet:支持排序的set集合(set使用的是hash存储,默认是不支持排序功能的)

NavigableSet:提供有序集合的扩展功能,如返回大于、大于等于、小于、小于等于某个key的子集合等

类简介  

  List:

Stack:LIFO(LAST-IN-FIRST-OUT)数组,继承自VECTOR(基本已废弃,图中未体现,这里也不过多介绍)

ArrayList:有序数组,底层使用连续的物理内存存储,数组大小不能动态改变,支持自动扩容,实际是复制一个更大的新数组出来。

LinkedList:使用链表形式组成的有序数组,不支持随机存储,需要重头遍历,物理内存不连续,数组大小无限制。

Queue:

LinkedList:同上,只是通过已有功能扩展实现了队列的功能

ArrayQueue:jdk内部使用

PriorityQueue:优先级队列,根据插入的数据的优先级自动排序,(优先级来源于Comporator,或者插入类实现Comparable接口的compareTo方法)

Deque:

LinkedList:支持双端操作

ArrayQueue:内部使用

Set:

HashSet:使用Hash表存储的集合

LinkedHashSet:有序的hashset(按照插入顺序使用链表的形式连接),不支持排序

TreeSet:支持排序的hashset

SortedSet:

TreeSet:支持排序的hashset

2.Collection全览-线程安全的实现类

  

3.Map全览-非线程安全的实现

  

接口简介

Map:无序的hash映射,以键值对的形式存储数据。

SortedMap:表示是一个有序的hash映射表

NavigableMap:提供有序hash映射的扩展功能,如返回大于、大于等于、小于、小于等于某个key的子集合等

类简介

EnumMap:key为枚举类的hash映射表

HashMap:键值对存储的hash映射,允许key或者value为null

LinkedHashMap:在hashmap的基础上增加了一个链表,按照插入顺序链接,保证有序性

WeakHashMap:同hashmap,只是使用的是弱引用,在内存不足的时候会被自动回收,一般可以用来做缓存,不能用来存储不可丢失的数据。

IdentityHashMap:插入删除等操作使用==进行比较的hash映射。注意:==比较得到是地址,其它的hash映射都是使用equals和hashCode进行比较的,基础类型比较的是值,自定义对象,可以自己覆写equals逻辑。

Treemap:支持排序的hashmap

4.Map全览-线程安全的实现

  

原文地址:https://www.cnblogs.com/gc65/p/11220822.html

时间: 2024-10-29 10:46:14

java容器-全览的相关文章

【Java心得总结七】Java容器下——Map

我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角度对Java中强大的容器类库做了一个简单总结而第二篇专门针对容器类库中的Collection部分进行了总结.这篇博文将对容器类库中的Map部分进行一个整理总结. 一.初识Map Map:一组成对的“键值对”对象,允许你使用键来查找值.(注:Map其实是将键与值形成的二元组按照一维线性的方式组织起来,

菜鸟刷面试题(五、Java容器篇)

目录: java 容器都有哪些? Collection 和 Collections 有什么区别? List.Set.Map 之间的区别是什么? HashMap 和 Hashtable 有什么区别? 如何决定使用 HashMap 还是 TreeMap? 说一下 HashMap 的实现原理? 说一下 HashSet 的实现原理? ArrayList 和 LinkedList 的区别是什么? 如何实现数组和 List 之间的转换? ArrayList 和 Vector 的区别是什么? Array 和

Java容器的常见问题

记录Java容器中的常见概念和原理 参考: https://github.com/wangzhiwubigdata/God-Of-BigData#%E4%B8%89Java%E5%B9%B6%E5%8F%91%E5%AE%B9%E5%99%A8 https://blog.csdn.net/justloveyou_/article/details/78653929 基础容器 ArrayList(动态数组).LinkedList(带头结点的双向链表) ArrayList public class A

Java 容器 & 泛型:一、认识容器

Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 容器是Java语言学习中重要的一部分.泥瓦匠我的感觉是刚开始挺难学的,但等你熟悉它,接触多了,也就"顺理成章"地知道了.Java的容器类主要由两个接口派生而出:Collection和Map. 一.Collection vs Collections 首先,Collection 和 Collections 是两个不同的概念.之所以放在一起,是为了更好的比较.Collection是容器层次结构中

java去掉全角空格和半角空格的方法,

JAVA中去掉空格 1. String.trim() trim()是去掉首尾空格 2.str.replace(" ", ""); 去掉所有空格,包括首尾.中间 String str = " hell o "; String str2 = str.replaceAll(" ", ""); System.out.println(str2); 3.或者replaceAll(" +","

Java 容器

在实际问题中我们经常需要处理数据,单纯依靠数组来存储数据对开发来说非常困难,java提供了一套容器来方便我们编程.对java容器有一个整体的了解对我们来说非常重要,这样在需要特定容器时,不会手忙脚乱,本文主要介绍java的一些基本容器,而不要仅知道使用ArrayList.下面的图片是java中的简单容器分类   --图片来自网络 java定义了四种容器类型,List.Set.Queue和Map. 其中List.Set.Queue都实现了Collection接口,下面来看看这4中类型的容器. Co

java容器---集合总结

思考为什么要引入容器这个概念? Java有多种方式保存对象(应该是对象的引用),例如使用数组时保存一组对象中的最有效的方式,如果你想保存一组基本类型的数据,也推荐使用这种方式,但大家知道数组是具有固定尺寸的,你必须事先知道你要需要多少个对象.但是在一般的情况中,你在写程序中并不知道将需要多少个对象,或者是否需要更加复杂的方式来存储对象,因此数组尺寸固定很不爽! 为了解决上述问题,引入了容器的概念.容器提供了完善的方法来保存对象,你可以使用这些工具来解决数量惊人的问题.Java容器类可以自动调整自

Java 容器在实际web项目中应用

前言:在java开发中我们离不开集合数组等,在java中有个专有名词:"容器" ,下面会结合Thinking in Java的知识和实际开发中业务场景讲述一下容器在Web项目中的用法.可结合图片代码了解Java中的容器 备注 :这个地方 ,参考于朝向远方的博客Java容器详解,既然前人总结的这么好,我就直接拿来用,在这里更注重在实际开发中的例子,感谢那些总结的前辈们,辛苦了. 简单的数组例子 Thinking in Java 中并没有把数组归为Java的容器,实际上数组的确不是Java

Java 容器在实际项目中的应用

前言:在java开发中我们离不开集合数组等,在java中有个专有名词:"容器" ,下面会结合Thinking in Java的知识和实际开发中业务场景讲述一下容器在Web项目中的用法.可结合图片代码了解Java中的容器 备注 :这个地方 ,参考于朝向远方的博客Java容器详解,既然前人总结的这么好,我就直接拿来用,在这里更注重在实际开发中的例子,感谢那些总结的前辈们,辛苦了. 简单的数组例子 Thinking in Java 中并没有把数组归为Java的容器,实际上数组的确不是Java