zoukankan      html  css  js  c++  java
  • Java集合框架之简述

    Java集合框架简述

    Java中的集合类是一种工具类,就像是容器,存储任意数量的具有共同属性的对象,集合框架是一个用来代表和操纵集合的统一架构,包含如下部分:

    1、接口:

    接口是代表集合的抽象数据类型,接口允许集合独立操纵其代表的细节。java.util.Collection是集合框架的顶级接口,它包含了一些重要的方法,比如:size(), iterator(), add(), remove(), clear(),集合类中都会实现这些方法。还有一些其它的重要接口,java.util.List, java.util.Set, java.util.Queue 和 java.util.Map。Map接口是一个独立的接口,它没有实现接口Collection,但它是结合框架重要的一部分。所有集合框架接口都在java.util包中。
    在这里插入图片描述

    序号 接口描述
    1 Collection 接口

    Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。

    2 List 接口

    List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。

    3 Set

    Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。

    4 SortedSet

    继承于Set保存有序的集合。

    5 Map

    将唯一的键映射到值。

    6 Map.Entry

    描述在一个Map中的一个元素(键/值对)。是一个Map的内部类。

    7 SortedMap

    继承于Map,使Key保持在升序排列。

    8 Enumeration

    这是一个传统的接口和定义的方法,通过它可以枚举(一次获得一个)对象集合中的元素。这个传统接口已被迭代器取代。

    Set和List的区别

    1. Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。
    
    2. Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>。
    
    3. List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector> 
    

    2、实现类

    是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构。
    在这里插入图片描述

    序号 类描述
    1 AbstractCollection 

    实现了大部分的集合接口。

    2 AbstractList 

    继承于AbstractCollection 并且实现了大部分List接口。

    3 AbstractSequentialList 

    继承于 AbstractList ,提供了对数据元素的链式访问而不是随机访问。

    4 LinkedList

    该类实现了List接口,允许有null(空)元素。主要用于创建链表数据结构,该类没有同步方法,如果多个线程同时访问一个List,则必须自己实现访问同步,解决方法就是在创建List时候构造一个同步的List。例如:

    Listlist=Collections.synchronizedList(newLinkedList(...));

    LinkedList 查找效率低。

    5 ArrayList

    该类也是实现了List的接口,实现了可变大小的数组,随机访问和遍历元素时,提供更好的性能。该类也是非同步的,在多线程的情况下不要使用。ArrayList 增长当前长度的50%,插入删除效率低。

    6 AbstractSet 

    继承于AbstractCollection 并且实现了大部分Set接口。

    7 HashSet

    该类实现了Set接口,不允许出现重复元素,不保证集合中元素的顺序,允许包含值为null的元素,但最多只能一个。

    8 LinkedHashSet

    具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现。

    9 TreeSet

    该类实现了Set接口,可以实现排序等功能。

    10 AbstractMap 

    实现了大部分的Map接口。

    11 HashMap
    HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。

    该类实现了Map接口,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步。

    12 TreeMap
    继承了AbstractMap,并且使用一颗树。 13 WeakHashMap
    继承AbstractMap类,使用弱密钥的哈希表。 14 LinkedHashMap
    继承于HashMap,使用元素的自然顺序对元素进行排序. 15 IdentityHashMap
    继承AbstractMap类,比较文档时使用引用相等。

    3、算法

    是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。

    Java集合框架优点

    1、减少开发工作
    它提供了几乎所有常见类型的集合和用于迭代和操作数据的有用方法,因此,我们可以更专注于业务逻辑,而不是设计我们的集合api
    
    2、提高代码质量
    使用经过良好测试的核心集合类可以提高我们的程序质量,提高了代码的健壮性和可用性
    
    3、可重用性和互操作性
    
    4、降低维护成本
    通过使用JDK附带的集合类,可以降低代码维护成本
    
    
  • 相关阅读:
    BZOJ 1101 莫比乌斯函数+分块
    BZOJ 2045 容斥原理
    BZOJ 4636 (动态开节点)线段树
    BZOJ 2005 容斥原理
    BZOJ 2190 欧拉函数
    BZOJ 2818 欧拉函数
    BZOJ 3123 主席树 启发式合并
    812. Largest Triangle Area
    805. Split Array With Same Average
    794. Valid Tic-Tac-Toe State
  • 原文地址:https://www.cnblogs.com/liukaifeng/p/10052644.html
Copyright © 2011-2022 走看看