精华内容
下载资源
问答
  • Java 集合框架

    2020-05-18 22:10:58
    参考: ...Java集合框架常见面试题.md 详解Java集合框架,让你全面掌握! Java集合框架完全解析 JAVA集合框架总结 java.util.Collection [I] +--java.util.List [I] +--java.util.ArrayList [C]

    参考:

    1. 由浅入深理解java集合(一)——集合框架 Collection、Map
    2. Java 集合框架
    3. 数据结构与算法——常用数据结构及其Java实现
    4. java 中几种常用数据结构
    5. Java - 集合框架完全解析
    6. Java集合框架常见面试题.md
    7. 详解Java集合框架,让你全面掌握!
    8. Java集合框架完全解析
    9. JAVA集合框架总结
      在这里插入图片描述
    java.util.Collection [I]
        +--java.util.List [I]
           +--java.util.ArrayList [C]    
           +--java.util.LinkedList [C]  
           +--java.util.Vector [C]    //线程安全
              +--java.util.Stack [C]  //线程安全
        +--java.util.Set [I]                   
           +--java.util.HashSet [C]      
           +--java.util.SortedSet [I]    
              +--java.util.TreeSet [C]    
        +--Java.util.Queue[I]
            +--java.util.Deque[I]   
            +--java.util.PriorityQueue[C]  
    java.util.Map [I]
        +--java.util.SortedMap [I]
           +--java.util.TreeMap [C]
        +--java.util.Hashtable [C]   //线程安全
        +--java.util.HashMap [C]
        +--java.util.LinkedHashMap [C]
        +--java.util.WeakHashMap [C]
    
    [I]:接口
    [C]:类
    本图来源于网络。
    
    展开全文
  • Java集合框架

    2021-02-05 00:44:45
    Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。 Java集合框架Java集合框架体系图

    Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。

    Java集合框架图

    在这里插入图片描述

    Java集合框架体系图

    在这里插入图片描述

    展开全文
  • java集合框架

    千次阅读 2016-03-26 19:26:29
    首先来看看java集合框架的结构图 从java集合框架的结构图,我们可以看到java集合框架包含两个大的部分:Collection与Map 一Collention接口: Collection是最基本的集合接口,一个Collection代表一组Object,即...

    首先来看看java集合框架的结构图


    从java集合框架的结构图,我们可以看到java集合框架包含两个大的部分:Collection与Map

    一Collention接口:

    Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些 Collection允许相同的元素而另一些不行。一些能排序而另一些不行。JavaSDK不提供直接继承自Collection的类,JavaSDK提供的类都是继承自Collection的“子接口”如List和Set。

    所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个 Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。

    如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:

    Iteratorit=collection.iterator();//获得一个迭代子

    while(it.hasNext()){

    Objectobj=it.next();//得到下一个元素

    }

    由Collection接口派生的两个接口是List和Set。

    1.1List:和Set不同,List允许有相同的元素。

    1.1.1ArrayList

    ArrayList内部是基于数组的。它允许所有元素,包括null。ArrayList不是同步的。

    这个数组的起始容量是10.当数组需要增长时,新的容量按如下公式获得:新容量=(旧容量*3)/2+1,也就是说每一次容量大概会增长50%。这就意味着,如果你有一个包含大量元素的ArrayList对象,那么最终将有很大的空间会被浪费掉,这个浪费是由 ArrayList的工作方式本身造成的。如果没有足够的空间来存放新的元素,数组将不得不被重新进行分配以便能够增加新的元素。对数组进行重新分配,将会导致性能急剧下降。如果我们知道一个ArrayList将会有多少个元素,我们可以通过构造方法来指定容量。我们还可以通过trimToSize方法在 ArrayList分配完毕之后去掉浪费掉的空间。

    和LinkedList一样,ArrayList也是非同步的(unsynchronized)。

    1.1.2LinkList

    是基于List的链表实现,允许null元素。此外LinkedList提供额外的get,remove,insert方法在 LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。

    注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:
    Listlist=Collections.synchronizedList(newLinkedList(...));

    1.1.3Vector:不推荐使用,一般用ArrayList取代

    1.1.3.1Stack:

    Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。基本的push和pop方法,peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置。

    返回值 函数名
    boolean empty()  判断堆栈是否为空。
    E peek()   查看堆栈顶部的对象,但不从堆栈中移除它。
    E pop()    移除堆栈顶部的对象,作为此函数的值返回该对象。
    E push(Eitem)  把元素压入堆栈顶部。
    int search(Objecto) 返回对象在堆栈中的位置,以 1 为基数。


    1.2Set:Set中的元素是唯一的,不能重复出现

    Set具有与Collection完全一样的接口,因此没有任何额外的功能,实际上Set就是Collection,只是行为不同。存入Set的每个元素 都必须是唯一的,因为Set不保存重复元素。加入Set的元素必须定义equals()方法以确保对象的唯一性。

    1.2.1HashSet:

    它不允许出现重复元素;不保证集合中元素的顺序.

    1.2.2TreeSet:

    可以实现排序等功能的集合,它在讲对象元素添加到集合中时会自动按照某种比较规则将其插入到有序的对象序列中,保证该集合元素组成按照“升序”排列。
    在对大量信息进行检索的时候,TreeSet比AraayList更有效率,能保证在log(n)的时间内完成)。

    TreeSet是用树形结构来存储信息的,每个节点都会保存一下指针对象,指向父节点,左分支,右分支,相比较而言,ArrayList就是一个含有元素的简单数组了,正因为如此,它占的内存也要比ArrayList多一些。

    TreeSet插入元素也比ArrayList要快一些,因为当元素插入到ArrayList的任意位置时,平均每次要移动一半的列表,需要O(n)的时间, 而TreeSet只需要O(log(n))


    二Map

    2.1HashMap

    Hashmap 是一个 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力.

    2.2HashTable

    Hashtable 与HashMap类似,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢。

    2.3TreeMap

    TreeMap能够把它保存的记录根据键排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。

    展开全文
  • JAVA集合框架

    2017-05-23 17:21:32
    JAVA集合框架 最近在回锅JAVA的集合框架,尝试分析其源码,这么做一方面是这些类非常实用,掌握其实现能更好的优化我们的程序;另一方面是学习借鉴JDK是如何实现了这么一套优雅高效的类库,提升编程能力。 本文对...

    最近在回锅JAVA的集合框架,尝试分析其源码,这么做一方面是这些类非常实用,掌握其实现能更好的优化我们的程序;另一方面是学习借鉴JDK是如何实现了这么一套优雅高效的类库,提升编程能力。

    本文对Java中的集合框架做一个大致概述,从一个高的角度俯视这个框架,了解了这个框架的一些理念与约定,会大大帮助后面分析某个具体类。


    写在前面

    首先要知道,集合代表了一组对象(和数组一样,但数组长度不能变,而集合能)。Java中的集合框架定义了一套规范,用来表示、操作集合,使具体操作与实现细节解耦。
    其实说白了,可以把一个集合看成一个微型数据库,操作不外乎“增删改查”四种操作,我们在学习使用一个具体的集合类时,需要把这四个操作的时空复杂度弄清楚了,基本上就可以说掌握这个类了。

    设计理念

    主要理念用一句话概括就是:提供一套“小而美”的API。API需要对程序员友好,增加新功能时能让程序员们快速上手。
    为了保证核心接口足够小,最顶层的接口(也就是Collection与Map接口)并不会区分该集合是否可变(mutability),是否可更改(modifiability),是否可改变大小(resizability)这些细微的差别。相反,一些操作是可选的,在实现时抛出UnsupportedOperationException即可表示集合不支持该操作。集合的实现者必须在文档中声明那些操作是不支持的。
    为了保证最顶层的核心接口足够小,它们只能包含之前说的“增删改查”基本操作(There is a compelling performance reason why an important implementation would want to override it.)

    此外,所有的集合类都必须能提供友好的交互操作,这包括没有继承Collection类的数组对象。因此,框架提供一套方法,让集合类与数组可以相互转化,并且可以把Map看作成集合。

    两大基类Collection与Map

    1. 在集合框架的类继承体系中,最顶层有两个接口:
      • Collection表示一组纯数据
      • Map表示一组key-value对
    2. 一般继承自Collection或Map的集合类,会提供两个“标准”的构造函数:
      • 没有参数的构造函数,创建一个空的集合类
      • 有一个类型与基类(Collection或Map)相同的构造函数,创建一个与给定参数具有相同元素的新集合类

    因为接口中不能包含构造函数,所以上面这两个构造函数的约定并不是强制性的,但是在目前的集合框架中,所有继承自Collection或Map的子类都遵循这一约定。

    Collection

    CollectionHierarchy
    Collection继承关系

    如上图所示,Collection类主要有三个接口:
    · Set:表示不允许有重复元素的集合(A collection that contains no duplicate elements)
    · List:表示允许有重复元素的集合(An ordered collection (also known as a sequence))
    · Queue:JDK1.5新增,与上面两个集合类主要是的区分在于Queue主要用于存储数据,而不是处理数据。(A collection designed for holding elements prior to processing.)

    Map

    MapHierarchy
    Map继承关系

    1. Map并不是一个真正意义上的集合(are not true collections),但是这个接口提供了三种“集合视角”(collection views ),使得可以像操作集合一样操作它们,具体如下:
      • 把map的内容看作key的集合(map’s contents to be viewed as a set of keys)
      • 把map的内容看作value的集合(map’s contents to be viewed as a collection of values)
      • 把map的内容看作key-value映射的集合(map’s contents to be viewed as a set of key-value mappings)
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,183
精华内容 11,673
关键字:

java集合框架

java 订阅