`

java学习之collection的一些比较

阅读更多
Java集合框架Collection,不管是面试还是开发中用的都是比较多的,其中一些区别也是问的比较多

------HashMap VS HashTable

HashMap 和 HashTable  都是实现的Map<K,V>接口,Map<K,V>就是一个上级接口,它没有继承别的接口,

public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>,Cloneable,Serializable


public class HashTable<K,V> extends Dictionary<K,V> implements Map<K,V>,Cloneable,Serializable


从他们的定义中可以看出他们都是实现的map接口,但是HashMap继承的AbstractMap 而HashTable集成的是Dictionary

api定义上面还有一句话的区别:The HashMap class is roughly equivalent to Hashtable, except that it is unsynchronized and permits nulls.

综上: HashMap是线程不安全的 HashTable是安全的,且HashMap能允许空值作为key or value

------List<E> VS set<E>

public interface Iterator<T>   T- the type of elements returned by the iterator

public interface Collection<E> extends Iterator<E>   E - the type of elements in this collection


public interface List<E> implements Collection<E>    An ordered collection (also known as a sequence).


public interface Set<E> implements Collection<E>  A collection that contains no duplicate elements and at most one null element.


collection接口集成的Iterator接口,而List和set都是实现了Collection接口

List是一个有序的序列,Set是一个无序的容器,且不能有空元素和不能有重复元素


------ArrayList<E> 和  Vector<E> 和 LinkedList<E>

public ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable,  Serializable  (Implements  all optional list operations, and permits all elements, including null and This class is roughly equivalent toVector, except that it is unsynchronized) 


public Vector<E> extends extends AbstractList<E> implements List<E>, RandomAccess, Cloneable,  Serializable

public LinkedList<E> extends AbstractSequentialList<E> implements List<E>,Deque<E>,Cloneable,Serializable


三者都实现了List接口,所以三者都是有序的,

Vector和ArrayList基本是一样的 除了Vector是线程安全的(synchronized)

ArrayList其实是包装了一个数组 Object[],当实例化一个ArrayList时,一个数组也被实例化,当向ArrayList中添加对象是,数组的大小也相应的改变。这样就带来以下有缺点: 快速随即访问 你可以随即访问每个元素而不用考虑性能问题,通过调用get(i)方法来访问下标为i的数组元素。 向其中添加对象速度慢 当你创建数组是并不能确定其容量,所以当改变这个数组时就必须在内存中做很多事情。 操作其中对象的速度慢 当你要想数组中任意两个元素中间添加对象时,数组需要移动所有后面的对象。

LinkedList LinkedList是通过节点直接彼此连接来实现的。每一个节点都包含前一个节点的引用,后一个节点的引用和节点存储的值。当一个新节点插入时,只需要修改其中保持先后关系的节点的引用即可,当删除记录时也一样。这样就带来以下有缺点: 操作其中对象的速度快 只需要改变连接,新的节点可以在内存中的任何地方 不能随即访问 虽然存在get()方法,但是这个方法是通过遍历接点来定位的所以速度慢。

HashSet<E> 实现了set<E>接口

public class HashSet<E> extends AbstractSet<E> implement Set<E>,Serializable,Cloneable (actually a HashMap instance,This class permits the null element)

上面的描述> 实际是一个hashMap实例,这个类允许空元素

虽然Set同List都实现了Collection接口,但是他们的实现方式却大不一样。List基本上都是以Array为基础。但是Set则是在 HashMap的基础上来实现的,这个就是Set和List的根本区别。
HashSet的存储方式是把HashMap中的Key作为Set的对应存储项。看看 HashSet的add(Object obj)方法的实现就可以一目了然了

所以,Set中的元素是不能重复的,如果使用add(Object obj)方法添加已经存在的对象,则会覆盖前面的对象


分享到:
评论

相关推荐

    java collection framework

    此外,还介绍了一种名为 JGL (Java Generic Library) 的第三方库,该库在 Java Collection Framework 出现之前就已经存在,并且提供了一些额外的功能。 #### 八、总结 《Java Collection Framework》这本书不仅是...

    java集合框架之Collection实例解析

    Java集合框架是Java编程语言中一个非常重要的组成部分,它为数据存储和操作提供了丰富的接口和类。本篇文章将深入解析`Collection`接口及其主要实现类`List`和`Set`,帮助你理解并熟练运用这些核心概念。 首先,`...

    Java.util.Collection类的学习.pdf

    Java.util.Collection类的学习 Java.util.Collection类是Java编程语言中的一个基础类库,提供了许多有用的方法来操作集合对象。Collection类包含了许多静态方法,可以对集合进行排序、混排、反转、替换等操作。 1....

    java重点之collection讲解

    这是java学习总结出来的,关于collection方面的一些知识,供学习参考。

    Java集合类(Collection)学习

    在这个Java集合类的学习资料中,我们将深入探讨`Collection`以及与其相关的`TreeMap`、`Set`和`List`等概念。 首先,我们从`Collection`接口开始。`Collection`接口是`java.util`包下的核心接口,它定义了集合的...

    java collection

    Java集合框架是Java编程语言中一个非常核心的部分,它提供了数据结构和算法的实现,使得开发者可以方便地存储和管理对象。在这个学习笔记中,我们将深入探讨ArrayList、HashMap、LinkedList和HashSet这四个重要的...

    java学习成套ppt

    【Java学习成套PPT】是一份全面的Java学习资源,包含了从基础知识到高级框架的系统教程。这个压缩包中的内容旨在帮助初学者逐步掌握Java编程语言,同时也适合有一定经验的开发者温故知新或者深入特定领域。让我们...

    java中Collection深入剖析

    总的来说,Java中的`Collection`框架是编程的核心工具之一,理解其工作原理和使用技巧,能够帮助开发者编写出更加高效、可靠的代码。通过深入学习和实践,你可以更好地驾驭这个强大的工具集,提升你的编程能力。

    java学习文档.rar

    这个"java学习文档.rar"压缩包包含了一系列的PPT文件,涵盖了Java的基础知识到进阶主题,是学习Java编程的理想资源。 首先,"Java语法.ppt"文件会详细讲解Java的核心语法,包括变量、数据类型、控制流语句(如if-...

    Java Garbage Collection Study java 垃圾回收学习

    ### Java垃圾回收(Garbage Collection)深度解析 #### 核心概念与机制 Java垃圾回收(Garbage Collection,简称GC)是Java运行时环境(JRE)中的一个关键特性,它自动管理对象的生命周期,释放不再使用的对象所...

    JAVA学习基本路线

    ### JAVA学习基本路线 在Java的学习过程中,有一个清晰的学习路径对于初学者来说至关重要。下面将根据给定的信息,详细介绍Java学习的基本路线。 #### 第一阶段:J2SE基础学习 在这一阶段,主要关注Java标准版...

    JAVA COLLECTION (APress)

    《JAVA COLLECTION》是一本专注于Java集合框架的书籍,由APress出版社出版。这本书深入浅出地探讨了Java API中的各种数据结构,是学习和理解Java集合框架的理想资源。作者通过简洁明了的语言,使得初学者也能轻松...

    java学习路线总结.doc

    Java学习路线是一个逐步深入的过程,尤其对于初学者来说,一个清晰的计划至关重要。以下是对Java学习路线的详细解析: **第一阶段:Java基础** - **Java开发介绍**:理解DOS命令,掌握JVM(Java虚拟机)、JRE(Java...

    各种类型的collection结构java 实现

    在Java编程语言中,集合(Collection)框架是用于存储和操作对象的重要部分。这个框架提供了多种数据结构,如栈(Stack)、队列(Queue)、表(List)和包(Set),来满足不同的需求。让我们深入探讨一下这些集合...

    java笔记整理(超详细) java笔记整理(超详细)

    Java是一种广泛使用的高级编程语言,以其面向对象的特性、跨平台的兼容性和强大的功能而闻名。...以上知识点涵盖了Java的基本特性、核心概念以及一些高级特性,理解这些将有助于深入学习和使用Java进行软件开发。

    java学习资料.zip

    "java学习资料.zip"包含了两本经典书籍的中文版本:《Effective Java》的第一版和第二版,这些都是Java开发者深入理解语言特性和最佳实践的重要资源。 《Effective Java》是由Joshua Bloch编写的,他是一位经验丰富...

    真正的Java学习从入门到精通

    ### 知识点详解:Java学习之路——从入门到精通 #### 一、工具篇:JDK —— Java的核心 **JDK (Java Development Kit)**是Java开发的基础,包含了Java运行环境(JRE),一系列Java工具,以及Java基础的类库(rt.jar)...

    Java--collection.rar_SEP_java 集合

    Java集合框架是Java编程语言中的一个核心组件,它为数据存储和管理提供了强大的支持。这个框架包括了多种接口和类,使得程序员可以高效地处理对象集合。...Java集合框架的深入学习对于提升Java编程技能至关重要。

    java的28个学习目标

    根据给定文件的信息,我们可以提炼出以下详细的Java学习目标及相关知识点: ### 1. 面向对象设计与分析(OOA/OOD)及模式 深入理解并掌握面向对象的设计原则,包括GOF(Gamma、Helm、Johnson、Vlissides)设计模式...

    java学习之九阴真经

    Java编程语言的学习是一个深入理解其基础技术的过程,其中包括对关键字、异常处理、内存管理、类与接口、逻辑运算以及集合框架等多个方面的掌握。在本文中,我们将深入探讨这些关键概念。 首先,`final`关键字在...

Global site tag (gtag.js) - Google Analytics