`

Collection,Map介绍

阅读更多

 

一、Collection和Map的结构图

Collection
├-List
│   ├LinkedList
│   ├ArrayList
│   └Vector
│     └Stack

├-Queue
│   ├……
│   ├LinkedBlockingQueue
│   └……

└-Set
     ├HashSet
     ├TreeSet
     └LinkedHashSet

Map
├-Hashtable
├-HashMap
└-WeakHashMap


二、集合类的特点

    当你事先不知道要存放数据的个数,或者你需要一种比数组下标存取机制更灵活的方法时,你就需要用到集合类。集合类存放于java.util包中。集合类存放的都是对象的引用,而非对象本身。出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。 集合类型主要有3种:set(集)、list(列表)和map(映射)。

A> 集
    集(set)是最简单的一种集合,Set与Collection有完全一样的接口。
    存入Set的每个元素必须是唯一的。因为对集中成员的访问和操作是通过集中对象的引用进行的,所以Set不保存重复元素,加入Set的Object必须定义equals()方法以确保对象的唯一性。
    Set接口不保证维护元素的次序。它的对象不按特定方式排序,只是简单的把对象加入集合中,就像往口袋里放东西。集也有多种变体,可以实现排序等功能,如TreeSet。

B> 列表
    次序(order)是List最重要的特性,它保证以某种特定的次序来维护元素。List为Collection添加了许多方法,使得能够向List中间插入或移除元素(只推荐LinkedList使用)一个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插入和删除元素。列表在数据结构中分别表现为:数组和向量、链表、堆栈、队列。

C> 映射
    映射中每个项都是成对的。映射中存储的每个对象都有一个相关的关键字(Key)对象,并且唯一。关键字决定了对象在映射中的存储位置,检索对象时必须提供相应的关键字,就像在字典中查单词一样。关键字本身并不能决定对象的存储位置,它需要通过一种散列(hashing)技术来处理,产生一个被称作散列码(hash code)的整数值,散列码通常用作一个偏置量,该偏置量是相对于分配给映射的内存区域起始位置的,由此确定关键字/对象对的存储位置。理想情况下,散列处理应该产生给定范围内均匀分布的值,而且每个关键字应得到不同的散列码。

D>队列
    在处理元素前用于保存元素的 collection。除了基本的 Collection 操作外,队列还提供其他的插入、提取和检查操作。每个方法都存在两种形式:一种抛出异常(操作失败时),另一种返回一个特殊值(null 或 false,具体取决于操作)。插入操作的后一种形式是用于专门为有容量限制的 Queue 实现设计的;在大多数实现中,插入操作不会失败。

三、详细介绍

1、集(Set)

A> HashSet
    为快速查找而设计的Set。存入HashSet的对象必须定义hashCode()。

B> TreeSet
    底层结构为tree的一种有序的Set。使用它可以从Set中提取有序的序列。

C> LinkedHashSet
    具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。

    HashSet采用散列函数对元素进行排序,这是专门为快速查询而设计的;TreeSet采用红黑树的数据结构进行排序元素;LinkedHashSet内部使用散列以加快查询速度,同时使用链表维护元素的次序,使得看起来元素是以插入的顺序保存的。需要注意的是,生成自己的类时,Set需要维护元素的存储顺序,因此要实现Comparable接口并定义compareTo()方法。

2、列表(List)

A> ArrayList
    实现基于动态数组的数据结构,并允许包括 null 在内的所有元素。
    以array实现完成的List。允许快速随机访问,但是当元素的插入或移除发生在List中间位置时,效率会很差。

B> LinkedList
    基于链表的数据结构,并且允许所有元素(包括 null)。提供最佳循序访问,以及成本低廉的“List中间位置元素插入和移除”。随机访问动作则相对缓慢。LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。

C> Vector
   Vector是线程同步的,所以它也是线程安全的.如果不考虑到线程的安全因素,一般用arraylist效率比较高。
   如果集合中的元素的数目大于目前集合数组的长度时,Vector增长率为目前数组长度的100%,而Arraylist增长率为目前数组长度的50%.如果在集合中使用数据量比较大的数据,用Vector有一定的优势.   

D> Stack
    Stack 类表示后进先出(LIFO)的对象堆栈。
    官方建议:
    Deque 接口及其实现提供了 LIFO 堆栈操作的更完整和更一致的 set,应该优先使用此 set,而非此类。例如:
        Deque<Integer> stack = new ArrayDeque<Integer>();

3、队列(Queue)


4、映射(Map)

A> HashMap
    实现一个映象,允许存储空对象,而且允许键是空(由于键必须是唯一的,当然只能有一个)。

B> HashTable
    实现一个映象,所有的键必须非空。为了能高效的工作,定义键的类必须实现hashcode()方法和equal()方法。这个类是前面java实现的一个继承,并且通常能在实现映象的其他类中更好的使用。

C> TreeMap
    实现这样一个映象,对象是按键升序排列的。

D> WeakHashMap
    实现这样一个映象:通常如果一个键对一个对象而言不再被引用,键/对象对将被舍弃。这与HashMap形成对照,映象中的键维持键/对象对的生命周期,尽管使用映象的程序不再有对键的引用,并且因此不能检索对象。

 

分享到:
评论

相关推荐

    集合框架包含collection和map的子类

    集合框架包含collection和map的子类。其中collection包含list、set和queue。map包括hashmap、hashtable和treemap

    Collection、Map、List、Set、Iterator

    ### Collection、Map、List、Set、Iterator 的详细解析 #### Collection 接口 - **定义**:`Collection` 是 Java 集合框架的核心接口之一,几乎所有其他集合接口都直接或间接继承自它。它提供了对集合进行增删查改...

    集合Collection和Map的总结

    这是对集合的总结,可以帮助我们对集合更深入更清晰的认识。

    JavaMap.rar_arraylist map_collection_java map_javamap_地图 java

    在Java中,Map接口不继承Collection接口,而是独立存在,因为它代表的是键值对(key-value)的关系,而不是单个元素的线性序列。 Map接口提供了多种实现类,如HashMap、TreeMap、LinkedHashMap等,每种实现类有不同...

    Collection,List,Set和_Map用法和区别

    Collection, List, Set 和 Map 用法和区别 Collection 是 Java 中的一种对象集合,提供了许多有用的方法来操作集合元素,例如添加、删除、遍历等。Collection 是一个接口,下面有两个子接口:List 和 Set。 List ...

    Collection List Set Map 区别记忆

    其中,`Collection`、`List`、`Set`和`Map`是四大基本接口,它们各自代表了一种特定的数据结构,有着不同的特性和用途。下面我们将详细探讨这些接口的区别及其相关知识点。 首先,`Collection`是所有集合类的顶级...

    java Collection&Map

    在这个框架中,Collection和Map接口及其实现类扮演着核心角色。 1. **Collection接口**: - Collection是所有单值容器的基接口,包括Set和List接口。 - **Set接口**:不允许重复元素,主要实现有HashSet、TreeSet...

    collection,map的区分

    ### Collection与Map的基本概念及其差异 在Java编程语言中,`Collection`与`Map`是两种非常基础且重要的数据结构,它们各自具有独特的特性和用途。理解这些数据结构之间的区别对于编写高效、可维护的代码至关重要。...

    collection,list,set,map

    从给定的文件内容中,我们可以提取出与标题“collection,list,set,map”相关的知识点,但是具体到这些数据结构的内容并没有在节选部分直接提及。不过,从描述和标签中的“源码 工具”可以推测,作者可能在讨论...

    Multi-map Generic Collection Class in C#

    Multi-map Generic Collection Class in C# - A Dictionary Collection Class that can Store Duplicate Key-value Pairs

    Java集合:Collection、List、Set、Map使用详解

    本文将深入探讨Java集合框架中的四个主要接口:Collection、List、Set和Map,以及它们的实现原理。 ### 集合框架概述 集合框架是Java API中用于存储和管理对象的统一框架。它为数据结构提供了抽象接口,使得程序员...

    java中MAp介绍

    通过以上介绍,我们可以看到Java中的Map接口及其相关实现类提供了丰富的功能来处理键值对数据。不同的实现类针对不同的应用场景提供了优化和支持。开发者可以根据实际需求选择合适的Map实现类来满足项目的需求。

    Collection-and-Map.zip_java list map

    关于Map,List,collection集合遍历,泛型等

    Java集合Collection、List、Set、Map使用详解.pdf

    "Java集合Collection、List、Set、Map使用详解" Java集合是Java编程语言中最基本也是最重要的一部分。能够正确地使用集合类和理解集合的实现原理对于Java程序的开发具有无比的好处。本文将详细解释Java集合的实现...

    Java集合排序及java集合类详解(Collection、List、Map、Set)讲解.pdf

    Java集合排序及java集合类详解(Collection、List、Map、Set)讲解 Java集合框架是Java语言中最重要的组件之一,能够正确使用Java集合框架对于Java程序的开发具有无比的好处。本文将详细解释Java集合框架的实现原理、...

    java Collection 详细介绍

    本文将详细介绍 Java Collection 的核心概念、接口、抽象类以及具体实现。 ### 集合的概念 集合(Collection)在 Java 中是指一组对象的组合,这些对象被称为元素。集合框架的设计旨在解决不同场景下的数据存储...

    Java集合排序及java集合类详解(Collection、List、Map、Set).doc

    Java集合排序及java集合类详解(Collection、List、Map、Set).doc

Global site tag (gtag.js) - Google Analytics