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集合体系的更多相关文章

  1. Java集合体系总结

    一.集合框架 集合是容纳数据的容器,java常用的集合体系图如下.以集合中是否运行重复元素来分,主要有List和Set接口,List集合中可以有重复元素,Set集合集合中的元素不可重复,Iterato ...

  2. JAVA集合体系之-开篇

    JAVA的集合体系是个庞大的知识体系,里面涵盖了,如数组结构,链表,红黑树,排序算法,线程安全等等知识点,接下来将会使用一系列的分享文章整理自己的学习心得,留的温故而知新.下图是整理出来的JAVA集合 ...

  3. 一目了然了解JAVA集合体系

    在编程中,常常需要集中存放多个数据.从传统意义上讲,数组是我们的一个很好的选择,前提是我们事先已经明确知道我们将要保存的对象的数量.一旦在数组初始化时指定了这个数组长度,这个数组长度就是不可变的,如果 ...

  4. 根据jdk1.8源码整理而得,java集合体系(继承、实现关系)图解,超清晰,一看就懂,方便记忆

    一.前言 1. 该关系图是本人根据JDK1.8 源码整理所得,只整理了常用的.常见的集合,并非全部. 2. 整理逻辑: Collection接口下有两个子接口:List 和 Set 接口. Map是独 ...

  5. 浅谈Java集合体系及底层实现原理

    集合加载因子 https://blog.csdn.net/qq_34627002/article/details/79769261 底层原理: https://blog.csdn.net/qq_258 ...

  6. Java.数据结构.集合体系详解

    I. 第一部分:常见数据结构 首先简单说下数据结构. 什么是数据结构?数据结构就是组织数据的方式. 常见的数据结构:栈,堆,树,图,数组,队列,链表. 这里主要介绍与java集合体系相关的栈.数组和链 ...

  7. 1.Java集合总结系列:Java集合概述

    一.概述 集合是 Java 中非常重要的 API,在实际应用中非常广泛,在许多面试中也是必考的知识点. Java 所有集合类都位于 java.util 包下,Java 的集合只能保存对象,而无法保存保 ...

  8. java集合体系结构总结

    好,首先我们根据这张集合体系图来慢慢分析.大到顶层接口,小到具体实现类. 首先,我想说为什么要用集合?简单的说:数组长度固定,且是同种数据类型.不能满足需求.所以我们引入集合(容器)来存储任意数据类型 ...

  9. Java集合--阻塞队列及各种实现的解析

    阻塞队列(Blocking Queue) 一.队列的定义 说的阻塞队列,就先了解下什么是队列,队列也是一种特殊的线性表结构,在线性表的基础上加了一条限制:那就是一端入队列,一端出队列,且需要遵循FIF ...

随机推荐

  1. 基于服务的SOA架构_后续篇

    今天是元宵节,首先祝各位广大博友在接下来的光阴中技术更上一层,事事如意! 昨天简单介绍了一下本人在近期开发过的一个电商购物平台的架构流程和一些技术说明:今天将详细总结一下在项目中用到的各个架构技术的环 ...

  2. 警惕Dictionary和SortedDictionary的顺序陷阱

    /*我们查询资料得知Dictionary的遍历顺序和添加Add时的顺序是一致的,不像 HashTable 顺序不可知;于是我要依赖Dictionary的这种顺序一致特性做一个,固定大小400长度的队列 ...

  3. (C#:Socket)简单的服务端与客户端通信。

    要求:1.可以完成一对一的通信:2.实现服务端对客户端一对多的选择发送:3.可以实现服务端的群发功能:4.可以实现客户端文件的发送: 要点:服务器端:第一步:用指定的端口号和服务器的ip建立一个End ...

  4. Javascript面对对象. 第五篇

    继承 继承是面向对象中一个核心的概念.其他正统面向对象语言都会用两种方式实现继承: 一个是接口实现,一个是继承. 而ECMAScript只支持继承,不支持接口实现,而实现继承的方式依靠原型链完成. / ...

  5. List<bean>转换Jsonarray知识心得

    使用基本的jdbc连接mysql,获取数据. 创建实体类user: package com.json; public class user { private int id; private Stri ...

  6. php新建数据库对象 基础知识

    数据访问 结合html 数据库 PHP面向对象的方式函数的方式 1建立通道 MySQLi 类通过构造函数造出 连接数据库地址 uesername 连接用户名 passwd dbname port so ...

  7. netflix ribbon概述

    LB方案分类 目前主流的LB方案可分成两类:一种是集中式LB, 即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5, 也可以是软件,如nginx), 由该设施负责把访问请求通过某种策略 ...

  8. Android开发9:网络访问&Web服务开发

    前言 啦啦啦各位小伙伴们好~ 一起进入我们今天的主题.今天我们将和大家学习网络访问和Web服务开发的相关知识,一起学习熟练使用 HttpURLConnection 访问 WebService,熟悉使用 ...

  9. 一个不错的windows编程网址

    http://www.zklmc.com/ 含有MFC,C#,web开发资料

  10. 业务逻辑 : forex & mlm

    业务逻辑 公司通过mlm的制度和顾客进行签约来收取资金,再把资金给第三方公司进行投资,再把所投资的回报给分配给公司和顾客. 公司的资金来自投资者,公司的营销策略来自mlm的制度,由市场人员来创建mlm ...