`
hunankeda110
  • 浏览: 746994 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java容器类List、ArrayList、Vector,map、HashSet等

阅读更多
一、List与ArrayList的区别
    List->AbstractList->ArrayList
    (1) List是一个接口,ArrayList是一个实现了List接口的具体类。
    他们是父子关系,我们常用的是ArrayList,但常用List的引用去操作ArrayList
    这是一个简单的面向接口编程的一种,如:List myList = new ArrayList();
    (2)他们主要是用来保存对象的集合,记得是保存对象的哦,你可别传个int(类)进去啊
    (3)要取出它里面保存的对象可以用下标,如:Object aaa = myList.get(0);
    这样我们就把保存在myList里的第一个对象取出来给了 aaa 啦。


二、祥解
     ---------------------------1楼------------------------------------
    好像List和Map都是接口
    不能实例化的
    以前这么写List list = new Vector();
    现在这么写List list = new ArrayList();
    用ArrayList 代替了Vector 因为前者的性能比后者好;
    但是两个都是实现了List借口的
    同理Map map = new HashTable();(以前)
    Map map = new HashMap();(现在)
    -------------------------------2楼-------------------------------
    ArrayList和HashMap是异步的,Vector和HashTable是同步的,所以Vector和HashTable是线程安全的,而ArrayList和HashMap并不是线程安全的。因为同步需要花费机器时间,所以Vector和HashTable的执行效率要低于ArrayList和HashMap。
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap

List接口
  List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。
和下面要提到的Set不同,List允许有相同的元素。
  除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。
  实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。
ArrayList类
  ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。
size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。
  每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。
  和LinkedList一样,ArrayList也是非同步的(unsynchronized)。
Map接口
  请注意,Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个value。Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射。
HashMap类
  HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和null key。,但是将HashMap视为Collection时(values()方法可返回Collection),其迭代子操作时间开销和HashMap的容量成比例。因此,如果迭代操作的性能相当重要的话,不要将HashMap的初始化容量设得过高,或者load factor过低。
----------------------------------3楼------------------------------------------
1.
List是接口,List特性就是有序,会确保以一定的顺序保存元素.
ArrayList是它的实现类,是一个用数组实现的List.
Map是接口,Map特性就是根据一个对象查找对象.
HashMap是它的实现类,HashMap用hash表实现的Map,就是利用对象的hashcode(hashcode()是Object的方法)进行快速散列查找.(关于散列查找,可以参看<<数据结构>>)
2.
一般情况下,如果没有必要,推荐代码只同List,Map接口打交道.
比如:List list = new ArrayList();
这样做的原因是list就相当于是一个泛型的实现,如果想改变list的类型,只需要:
List list = new LinkedList();//LinkedList也是List的实现类,也是ArrayList的兄弟类
这样,就不需要修改其它代码,这就是接口编程的优雅之处.
另外的例子就是,在类的方法中,如下声明:
private void doMyAction(List list){}
这样这个方法能处理所有实现了List接口的类,一定程度上实现了泛型函数.
3.
如果开发的时候觉得ArrayList,HashMap的性能不能满足你的需要,可以通过实现List,Map(或者Collection)来定制你的自定义类.
可以参考The Art Of Computer Programming的Sorting and Searching部分
分享到:
评论

相关推荐

    Java中List、ArrayList、Vector及map、HashTable、HashMap分别的区别.

    Java中的容器类是Java集合框架的重要组成部分,它们用于存储和管理数据。在Java中,主要有两种类型的容器:List和Map。List是有序的集合,而Map则是键值对的存储结构。 1. List接口与ArrayList类 List是一个接口,...

    java 集合类 容器类

    ### Java集合类与容器类详解 #### 一、引言 在Java编程中,集合类是一种非常重要的数据结构,用于存储一系列对象。相比于数组,集合类提供了更多的灵活性和功能,尤其是在处理未知数量的对象时更为方便。Java标准...

    Java容器类学习心得.pdf

    本篇文章将重点介绍Java容器类中Collection接口、Map接口、Iterator接口以及List、Set和Map的实现类。 首先,Collection接口是容器类层次结构的核心,它是单列集合的主要根接口。Collection接口的主要方法包括add...

    Java 容器类的解析及对比

    本文将详细解析并对比Java中的各种容器类,特别是`Collection`、`List`、`ArrayList`、`Vector`以及`Map`、`HashTable`、`HashMap`的区别。这些知识点对于面试复习尤其重要。 #### 二、基础概念 - **`Collection`*...

    java练习题--容器使用练习

    9. 集合接口和实现:理解Collection、List、Set、Map等接口,以及它们的实现类,比如ArrayList实现了List接口,HashSet实现了Set接口,HashMap实现了Map接口。 10. 排序与比较器:对于支持排序的容器,如TreeSet和...

    Java 容器.pdf_电子版pdf版

    2. List:有序的集合,常用的实现类有 ArrayList、Vector、LinkedList 等。 * ArrayList:基于动态数组实现,支持随机访问。 * Vector:和 ArrayList 类似,但它是线程安全的。 * LinkedList:基于双向链表实现,...

    java容器(持有对象)

    在Java编程中,容器是用来存储和管理对象的类或接口,...总之,Java中的容器类提供了灵活的方式来存储和操作对象,理解并熟练掌握List、Set、Map及其各自实现类的特性和使用场景,对于编写高效、可维护的代码至关重要。

    Java容器类PPT课件.pptx

    Java容器类是Java编程语言中用于管理和操作对象集合的重要组成部分,它们主要集中在`java.util`包下。在Java集合框架中,"容器"通常指的是能够存储一组对象的类或者接口。这个框架为开发者提供了灵活的方式来存储、...

    Java容器简要介绍

    本文将简要介绍Java容器的主要概念、API以及常用的容器类。 首先,Java容器分为两大主要类别:Collection和Map。Collection是所有单值容器的父接口,包括List、Set和Queue等子接口。List接口代表有序的集合,允许有...

    Java集合类List-Set-Map的区别和联系.doc

    Java集合框架是编程中不可或缺的一部分,它提供了多种数据结构,如List、Set和Map,用于存储和管理对象。下面我们将详细探讨这些集合类的区别、联系以及何时选择它们。 首先,数组(Array)是最基础的数据结构,它...

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

    List接口的实现类有ArrayList、LinkedList和Vector等。 #### 常用方法 除了Collection接口中的方法,List还提供了以下方法: - `get(int index)`:获取指定索引处的元素。 - `set(int index, E element)`:替换...

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

    Java集合排序及java集合类详解(Collection、List、Map、Set) Java 中的集合框架是 Java 语言中最重要和最常用的部分之一。它能够帮助开发者更方便地处理和存储数据,从而提高编程效率和程序的可读性。本文将详细...

    02-Java集合容器面试题-重点.docx

    Java集合容器概述、集合框架、List、Set、Map接口、Iterator、ArrayList、LinkedList、Vector、HashSet、HashMap、Queue、BlockingQueue、ConcurrentHashMap等。 Java 集合容器概述 Java 集合容器是用于存储数据...

    JAVA容器总结

    Java容器,主要包括集合框架中的Set、List、Map和Queue接口,它们是Java编程中处理数据的重要工具。下面将对这些接口及其常见的实现类进行详细解释。 1. **Set接口**: Set接口代表一个无序且不允许重复元素的集合...

    java中容器是什么意思?

    容器通常指的是集合框架中的各种类,如List、Set、Map等,它们允许开发者以不同的方式存储和访问数据,提供了一系列灵活且强大的功能。 ### 一、Java中的容器类型 #### 1. List接口 List接口是有序的集合,可以...

    Java集合容器面试题

    ArrayList是 Java 2 中引入的,Vector是 Java 1 中引入的,Vector是线程安全的。 插入数据时,ArrayList、Linked List、Vector谁速度较快 插入数据时,ArrayList、Linked List、Vector谁速度较快?Linked List速度...

    List set map集合容器的区别

    根据给定文件的信息,我们可以详细地探讨一下Java中几种主要的集合容器——List、Set以及Map的区别,并且深入了解它们各自的特性和应用场景。 ### 一、List #### 1. ArrayList - **特点**:`ArrayList`是基于动态...

    Java容器框架 collection集合

    Java容器类库主要目的是为了存储对象,根据不同的数据结构,可以将其划分为两个主要的概念:**Collection** 和 **Map**。 - **Collection**:这是一个单一元素的序列。它进一步细分为以下几个子类: - **List**:...

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

    根据容器的特性和用途,Java集合框架中的容器可以分为四大类:`Collection`、`List`、`Set`和`Map`。 - **Collection**:这是一个接口,它是所有集合类的根接口,提供了对集合通用操作的支持,如添加、删除、查询等...

    java集合分类总结.doc

    List集合的主要实现类有ArrayList、LinkedList、Vector等。ArrayList是数组实现的,查询快,增删慢,线程不安全,轻量级。LinkedList是链表实现的,增删快,查询慢。Vector是数组实现的,线程安全,重量级。 Set...

Global site tag (gtag.js) - Google Analytics