java集合体系
Collection接口:
1.单列集合类的根接口。
2.定义了可用于操作List、Set的方法——增删改查;
3.继承自Iterable<E>接口,该接口中提供了iterator() 方法:返回一个在一组 T 类型的元素上进行迭代的迭代器,使其具有使用foreach语句迭代的特权。
List接口:
1.元素可重复。
2.元素有序:元素的存入顺序和取出顺序一致。
3.所有元素是以一种线性方式进行存储,在程序中可以通过索引来访问集合中的指定元素。
4.所有的List中可以有null元素。
ArrayList集合:
1.ArrayList内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来存储这些元素(2倍数目增长),因此 可将ArrayList看作一个长度可变的数组。
2.ArrayList集合的底层是使用一个数组来保存元素,在增加或删除指定的元素时,会导致创建新的数组,效率较低,不适合做大量的增删操作。
3.ArrayList的数组结构允许通过索引的方式访问元素,因此使用ArrayList集合查找元素很便捷。
4.ArrayList是线程不安全的,当运行到多线程环境中时,需要自己管理线程同步的问题。
Vector集合:
1.Vector与ArrayList一样,也是通过数组实现的,当存入的元素超过数组长度时,会在内存中分配一个更大的数组来存储这些元素(1.5倍数目增长)。
2.Vector支持线程的同步,即某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问 ArrayList慢。
LinkedList集合:
1.LinkedList内部维护了一个双向循环链表,链表中的每一个元素都使用引用的方式来记住前一个和后一个元素,从而将所有元素连接起来。
2.当对LinkedList做添加,删除动作的时候就不用像基于Array的List一样,必须进行大量的数据移动。只要更改引用的相关信息就可以实现了。这就是LinkedList 的优势。
Set接口:
1.不包含重复元素的集合,set中最多一个null元素。
2.因为Set集合无序,只能用Iterator实现遍历。
3.Set依赖于Map,Map的所有Key组合起来就是Set。
HashSet:
1.HashSet依赖于HashMap,它实际上是通过HashMap实现的。
2.元素无序且不保证集合的迭代顺序。
3.线程不安全,存取速度快,需要用以下语句来进行S同步转换:
Set s = Collections.synchronizedSet(new HashSet(...));
4.依赖元素的hashCode方法和equals方法保证元素唯一性。
TreeSet:
1.TreeSet依赖于TreeMap,它实际上是通过TreeMap实现的。
2.可以对Set集合进行排序,通过compareTo或者compare方法进行排序。
3.线程不安全。
4.内部采用平衡的排序二叉树来存储元素
Map:
1.“键值”对映射的抽象接口。该映射不包括重复的键,一个键对应一个值。
2.Map集合的数据结构仅仅针对键有效,与值无关。
HashMap:
1.底层数据结构是哈希表。底层是用数组链表存储的,元素是Entry。
2.元素无序,没有任何明显的顺序来保存数据。
3.提供了最快的查找技术。
4.线程不安全。
5.允许null value和null key,最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null。
Hashtable:
1.底层数据结构是哈希表。底层是用数组链表存储的,元素是Entry。
2.元素无序。
3.效率较慢。
4.线程安全。
5.key和value的值均不允许为null。
TreeMap:
1.底层数据结构是红黑树(是一种自平衡的二叉树)。
2.保存的记录根据键(key)排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。
3.TreeMap不允许key的值为null。
4.线程不安全。
java集合体系的更多相关文章
- Java集合体系总结
一.集合框架 集合是容纳数据的容器,java常用的集合体系图如下.以集合中是否运行重复元素来分,主要有List和Set接口,List集合中可以有重复元素,Set集合集合中的元素不可重复,Iterato ...
- JAVA集合体系之-开篇
JAVA的集合体系是个庞大的知识体系,里面涵盖了,如数组结构,链表,红黑树,排序算法,线程安全等等知识点,接下来将会使用一系列的分享文章整理自己的学习心得,留的温故而知新.下图是整理出来的JAVA集合 ...
- 一目了然了解JAVA集合体系
在编程中,常常需要集中存放多个数据.从传统意义上讲,数组是我们的一个很好的选择,前提是我们事先已经明确知道我们将要保存的对象的数量.一旦在数组初始化时指定了这个数组长度,这个数组长度就是不可变的,如果 ...
- 根据jdk1.8源码整理而得,java集合体系(继承、实现关系)图解,超清晰,一看就懂,方便记忆
一.前言 1. 该关系图是本人根据JDK1.8 源码整理所得,只整理了常用的.常见的集合,并非全部. 2. 整理逻辑: Collection接口下有两个子接口:List 和 Set 接口. Map是独 ...
- 浅谈Java集合体系及底层实现原理
集合加载因子 https://blog.csdn.net/qq_34627002/article/details/79769261 底层原理: https://blog.csdn.net/qq_258 ...
- Java.数据结构.集合体系详解
I. 第一部分:常见数据结构 首先简单说下数据结构. 什么是数据结构?数据结构就是组织数据的方式. 常见的数据结构:栈,堆,树,图,数组,队列,链表. 这里主要介绍与java集合体系相关的栈.数组和链 ...
- 1.Java集合总结系列:Java集合概述
一.概述 集合是 Java 中非常重要的 API,在实际应用中非常广泛,在许多面试中也是必考的知识点. Java 所有集合类都位于 java.util 包下,Java 的集合只能保存对象,而无法保存保 ...
- java集合体系结构总结
好,首先我们根据这张集合体系图来慢慢分析.大到顶层接口,小到具体实现类. 首先,我想说为什么要用集合?简单的说:数组长度固定,且是同种数据类型.不能满足需求.所以我们引入集合(容器)来存储任意数据类型 ...
- Java集合--阻塞队列及各种实现的解析
阻塞队列(Blocking Queue) 一.队列的定义 说的阻塞队列,就先了解下什么是队列,队列也是一种特殊的线性表结构,在线性表的基础上加了一条限制:那就是一端入队列,一端出队列,且需要遵循FIF ...
随机推荐
- Spring实战——Profile
看到Profile这个关键字,或许你从来没有正眼瞧过他,又或者脑海中有些模糊的印象,比如除了这里Springmvc中的Profile,maven中也有Profile的标签. 从字面意思来看,Profi ...
- Codeforces 506E Mr. Kitayuta's Gift (矩阵乘法,动态规划)
描述: 给出一个单词,在单词中插入若干字符使其为回文串,求回文串的个数(|s|<=200,n<=10^9) 这道题超神奇,不可多得的一道好题 首先可以搞出一个dp[l][r][i]表示回文 ...
- SpringBoot + SwaggerUI
后台写接口,由于要提供接口文档给前台使用,所有研究了一下swagger,看到网上有篇文章写得不错,就直接拿过来了. swagger用于定义API文档. 好处: 前后端分离开发 API文档非常明确 测试 ...
- smarty模板基础3 *缓存数据*
缓存数据,这个并不是暂存的缓存,而是写入了内存的缓存 通过一个例子来书写:缓存数据 一.书写php和html页面的基本功能 既然是用smarty模板,那么前端和后端要分开写了 (1)php页面 < ...
- java之重定向与转发
昨天搞了一个问题,关于手机返回按钮的(Android机,ios没有返回键) 在每一步操作都要进过鉴权,如果鉴权不通过就需要跳转到指定jsp页面,再进行link:到app进行登录操作: 然后问题出现了, ...
- Linux实战教学笔记21:Rsync数据同步工具
第二十一节 Rsync数据同步工具 标签(空格分隔): Linux实战教学笔记-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载,转载 ...
- 局域网里连接mysql服务器,其他人连接自己的mysql服务器
应用场景: 自己在自己的机器上开发网站,同事也要和我一起开发,就两个人,我自己的机器当做服务器,让他直接连我的数据库,看我的项目就行了,并且用svn进行开发,相当不错 问题: 怎样在局域网里,其他人 ...
- Canada Cup 2016 C. Hidden Word
C. Hidden Word time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...
- Memcached 内存管理详解
Memcached是一个高效的分布式内存cache,了解memcached的内存管理机制,便于我们理解memcached,让我们可以针对我们数据特点进行调优,让其更好的为我所用. 首先需要我们先了解两 ...
- 【翻译】LPeg编程指南
原文:http://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html 译者序: 这个是官方的LPeg的文档.这段时间学习LPeg的时候发现国内关于LPeg的文章 ...