集合的体系结构:
    |--Collection(单列集合的根接口)
        |--List(子接口):元素是有序的,元素可以重复。因为该集合体系有索引。
            |--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
                |--因为底层采用数组的数据结构,而数组中的元素在堆内存中是连续分配的,而且有索引,所以查询快,增删稍慢
                |--在使用迭代器遍历元素时,不能再使用集合的方法操作集合中的元素
                |--调用集合的contains()或remove()方法时底层会调用equals方法,如果存入集合的对象没有实现equals(),则调用Object的equals()方法
            |--LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。
            |--Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。
        |--Set(子接口):元素是无序(存入和取出的顺序不一定一致),元素不可以重复。
            |--HashSet:底层数据结构是哈希表。是线程不安全的。不同步。
                |--HashSet是如何保证元素唯一性的呢?
                    |--是通过元素的两个方法,hashCode和equals来完成。
|--如果元素的HashCode值相同,才会判断equals是否为true。
|--如果元素的hashcode值不同,不会调用equals。
|--注意,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。
|--LinkedHashSet
                |--TreeSet:可以对Set集合中的元素进行排序。
                    |--底层数据结构是二叉树。 保证元素唯一性的依据:compareTo方法return 0.
                    |--TreeSet排序的第一种方式:让元素自身具备比较性。元素需要实现Comparable接口,覆盖compareTo方法。
                        这种方式也成为元素的自然顺序,或者叫做默认顺序。
                    |--TreeSet的第二种排序方式。当元素自身不具备比较性时,或者具备的比较性不是所需要的。
                        这时就需要让集合自身具备比较性。在集合初始化时,就有了比较方式。
                        创建一个比较器(实现Comparator接口,重写compare方法),在创建TreeSet集合时将比较器传递给集合.
    |--Map集合:该集合存储键值对。一对一对往里存。而且要保证键的唯一性。
        |--Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。jdk1.0.效率低。
        |--HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。将hashtable替代,jdk1.2.效率高。
        |--TreeMap:底层是二叉树数据结构。不同步。可以用于给map集合中的进行键排序。
        |--和Set很像。其实,Set底层就是使用了Map集合
            |--map集合的两种取出方式:
                |--Set<k> keySet:将map中所有的键存入到Set集合。因为set具备迭代器。
                    所有可以迭代方式取出所有的键,在根据get方法。获取每一个键对应的值。
                    Map集合的取出原理:将map集合转成set集合。在通过迭代器取出。
                |--Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是:Map.Entry
                    Entry其实就是Map中的一个static内部接口。
                    为什么要定义在内部呢?
                    因为只有有了Map集合,有了键值对,才会有键值的映射关系。
                    关系属于Map集合中的一个内部事物。而且该事物在直接访问Map集合中的元素

Java中集合框架体系的更多相关文章

  1. java集合类-集合框架体系

    集合框架体系 集合框架体系是由Collection.Map和 Iterator(迭代器) 实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口 Collection体系 Set接口:元素无序且不 ...

  2. 十五、Java基础---------集合框架体系以及List

    在介绍集合之前先说一下数组,正如我们所知,数组是某一类型数据的集合,强调的是数据,而且必须单一:集合框架的不同之处在于存储的数据类型没有任何限制,既可以存储基本数据类型(会自动提升为相应的包装类)也可 ...

  3. java中集合框架

    java平台提供了一个全新的集合框架."集合框架"主要由一组用来操作对象的接口组成.不同接口描述一组不同数据类型. 在很大程度上,一旦您理解了接口,您就理解了框架.虽然您总要创建接 ...

  4. Java中集合框架,Collection接口、Set接口、List接口、Map接口,已经常用的它们的实现类,简单的JDK源码分析底层实现

    (一)集合框架: Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(实现接口的类).所有抽象出来的数据结构和操作(算法)统称为集合框架. 程序员在具体应用的时候,不必考虑数据结构和 ...

  5. Java中集合的概述

    一.集合和数组的区别 1.数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用. 2.集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数 ...

  6. Java集合框架体系JCF

    Java 集合框架体系作为Java 中十分重要的一环, 在我们的日常开发中扮演者十分重要的角色, 那么什么是Java集合框架体系呢? 在Java语言中,Java语言的设计者对常用的数据结构和算法做了一 ...

  7. Java 集合框架体系总览

    尽人事,听天命.博主东南大学硕士在读,热爱健身和篮球,乐于分享技术相关的所见所得,关注公众号 @ 飞天小牛肉,第一时间获取文章更新,成长的路上我们一起进步 本文已收录于 「CS-Wiki」Gitee ...

  8. java的集合框架最全详解

    java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...

  9. java.util 集合框架集合

    java的集合框架为程序提供了一种处理对象组的标准方式.设计了一系列标准泛型接口: ⑴Collection ()接口,扩展了Iterable接口,位于集合层次结构的顶部,因此所有的集合都实现Colle ...

随机推荐

  1. iOS基础 - 核心动画

    一.核心动画 l 核心动画基本概念 l 基本动画 l 关键帧动画 l 动画组 l 转场动画 l Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事 ...

  2. bzero与memset

    bzero:原型:void bzero(void *s, int n); 功能:置字节字符串s的前n个字节为零且包括‘\0’. 说明:bzero无返回值,并且使用strings.h头文件,string ...

  3. C++反汇编与逆向分析技术揭秘

    C++反汇编-继承和多重继承   学无止尽,积土成山,积水成渊-<C++反汇编与逆向分析技术揭秘> 读书笔记 一.单类继承 在父类中声明为私有的成员,子类对象无法直接访问,但是在子类对象的 ...

  4. DOM处理

    DOM处理 这几天整理了一下思路,本来觉得DOM部分会有很多东西,但是忽然发现频繁使用的其实并不太多 class class处理部分主要有四个 hasClass:检查元素是否包含某个class add ...

  5. 启动tomcat报host-manager does not exist or is not a readable directory异常

    新安装了一个tomcat6,安装完之后在webapps下面会有一些tomcat自带的项目(ROOT.manager.host-manager...) 把这些没用的项目删掉之后,启动tomcat 报如下 ...

  6. SQL Server 2008 维护计划实现数据库备份

    SQL Server 2008 维护计划实现数据库备份(最佳实践) 2013-08-29 09:08 by 听风吹雨, 173 阅读, 2 评论, 收藏, 编辑 一.背景 之前写过一篇关于备份的文章: ...

  7. 依赖注入(IOC)

    依赖注入(IOC) 背景介绍 在设计模式中,尤其是结构型模式很多时候解决的就是对象间的依赖关系,变依赖具体为依赖抽象.平时开发中如果发现客户程序依赖某个或某类对象,我们常常会对他们进行一次抽象,形成抽 ...

  8. [读书心得] .NET中 类型,对象,线程栈,托管堆在运行时的关系

    .NET中 类型,对象,线程栈,托管堆 在运行时的关系 The Relationship at Run Time between Types,Objects,A Thread's Stack,and ...

  9. BCP导入导出MsSql

    BCP导入导出MsSql 1.导出数据 (1).在Sql Server Management Studio中: --导出数据到tset1.txt,并指定本地数据库的用户名和密码 --这里需要指定数据库 ...

  10. python cookbook学习笔记 第一章 文本(1)

    1.1每次处理一个字符(即每次处理一个字符的方式处理字符串) print list('theString') #方法一,转列表 结果:['t', 'h', 'e', 'S', 't', 'r', 'i ...