`
zhuobinzhou
  • 浏览: 136562 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类

Java中的常见容器比较

阅读更多

Java中的容器

1Java的容器类有两种基本类型:CollectionMap,区别在于容器中每个位置保存的元素个数。Collection每个位置只能保存一个元素,Map保存的是键值对。

 

2、迭代器,是一个对象,它的工作是遍历并选择序列中的对象,“轻量级”的对象,创建它的代价小。常用方法:next()hasNext();remove();

 

3Collection

1List

ArrayList:允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢,可以理解为容量大小可变的数组。

LinkedList:向List中间插入与移除的开销并不大,随机访问则相对较慢,可以当作堆栈、队列和双向队列使用。

最佳做法是将ArrayList作为默认首选,只有当程序性能因为经常从表中间进行插入和删除变差时,才选择LinkedList

 

2Set,不保存重复的元素:

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

     TreeSet:保持次序的Set,底层为树结构,使用它可以从Set中提取有序的序列,“按对象比较函数对元素排序”,而不是指“元素插入的次序”。

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

     HashSet性能总是比TreeSet好。TreeSet存在的唯一原因是它可以维持元素的排序状态

 

4Map

1HashMap:基于散列表的实现。插入和查询“键值对”的开销是固定的。

2LinkedHashMap:类似于HashMap,但是迭代器遍历它时,取得“键值对”的顺序是其插入次序,或者是最近最少使用(LRU)次序。比HashMap慢一点,但是迭代访问时会更快。

3TreeMap:基于红黑树的实现。查看“键”或“键值对”时,它们会被排序(次序由ComparableComparator决定),所得到的结果是经过排序的,而且是唯一带有subMap()方法的Map,可以返回一个子树。

     首选HashMap,只有在需要一个总是排好序的Map时,才使用TreeMap

 

5、如果要使用散列的数据结构(HashSetHashMapLinkedHashSet或者LinkedHashMap)最好先覆盖hashCode()equals(),因为从Object继承下来的hashCode()方法默认是使用对象的地址计算散列值

分享到:
评论

相关推荐

    Java容器总结

    Java中最常见的容器包括Java集合框架(如ArrayList、HashMap等)、JavaBeans、Enterprise JavaBeans(EJB)、Servlet容器(如Tomcat、Jetty)以及Spring框架中的IoC(控制反转)和DI(依赖注入)容器。 1. **Java...

    Java 常见并发容器总结

    Java 常见并发容器总结 JDK 提供的这些容器大部分在 `java.util.concurrent` 包中。 - **`ConcurrentHashMap`** : 线程安全的 `HashMap` - **`CopyOnWriteArrayList`** : 线程安全的 `List`,在读多写少的场合性能...

    JAVA容器知识积累

    6. **泛型**:Java的泛型允许在容器中指定元素类型,提高了代码的安全性和可读性。例如,ArrayList表示一个只包含字符串的列表。 7. **集合与数组之间的转换**:Java提供了便利的方法将集合转换为数组,反之亦然。...

    Java泛型与容器详细笔记.pdf (带书签)

    Java泛型与容器详细笔记涉及到Java编程语言中的两个重要概念:泛型(Generics)和容器(Containers)。容器主要包括Java集合框架中的各类集合类,如List、Set、Map等,它们用于存储和操作数据。泛型则提供了一种类型...

    java容器(持有对象)

    在Java中,常见的容器主要分为三类:List、Set和Map,这些都是Java集合框架的重要组成部分。 首先,我们来看Collection接口,它是所有单值容器的基础接口。Collection接口定义了通用的操作方法,比如size()返回容器...

    java 集合类 容器类

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

    java源代码,关于java中常见各种类的用法

    这份"java源代码,关于java中常见各种类的用法"的压缩包文件是学习Java基础知识的绝佳资源,尤其适合初学者。它包含了丰富的中文注解,帮助理解复杂的概念,使得学习过程更为直观和轻松。 首先,让我们深入探讨Java...

    JAVA容器效率深度分析List

    本文将深入分析Java中的List接口及其常见的实现类,如ArrayList、LinkedList和Vector,探讨它们的效率差异和适用场景。 首先,List是Java集合框架中的一个重要接口,它扩展了Collection接口,并规定了元素的有序性...

    Java 最常见 200+ 面试题全解析:面试必备.pdf

    Java作为一门编程语言,在面试过程中被广泛考察,而《Java 最常见 200+ 面试题全解析:面试必备》这份文件,显然是为希望在Java领域深造的求职者和从业者准备的一份复习资料。文档中所包含的面试题按照知识点被...

    Java 容器.pdf_电子版pdf版

    Java 容器中使用了多种设计模式,如迭代器模式、适配器模式等。 1. 迭代器模式:Collection 继承了 Iterable 接口,其中的 iterator() 方法能够产生一个 Iterator 对象,通过这个对象就可以迭代遍历 Collection 中...

    Java最常见200面试必备题.pdf

    标题中提及的是“Java最常见200面试必备题.pdf”,而描述中解释了本文档的目的在于为有志于Java技术的读者提供一份详实而权威的面试题清单。它强调了三大原因:帮助梦想准备中的“有心人”;弥补市场上面试题答案不...

    java常见程序的算法

    总之,学习和掌握这些Java常见程序的算法对于提升编程技能至关重要。无论是基本的排序和搜索,还是高级的数据结构和算法,都是解决问题的有效工具。通过对比C和Java的实现,可以更好地理解和应用算法,为实际项目...

    Java 最常见200道面试题.pdf

    首先,文档描述了一个名为“Java 最常见200道面试题.pdf”的文件,它是一个集合了互联网公司面试题的集锦,主要针对后台、客户端、测试、数据、算法等职位。文档强调了这些面试题对于准备面试的程序员具有很高的价值...

    java泛型容器堆栈代码

    在这个“java泛型容器堆栈代码”中,我们将会探讨Java如何利用泛型来创建高效且类型安全的容器,特别是堆栈数据结构。 堆栈是一种基于“后进先出”(LIFO)原则的数据结构,常用于实现函数调用栈、内存管理等场景。...

    java容器类 是初学者很好的学习材料

    Java容器类是Java编程语言中不可或缺的一部分,它们主要用于存储和管理对象。这些类和接口位于`java.util`包中,为开发者提供了灵活的数据结构和数据操作方式。在Java中,容器类主要分为两大类:Collection和Map。 ...

    JAVA容器总结

    后缀为.mmap的思维导图,总结了JAVA容器的常见类

    Java基础常见英语词汇

    了解并掌握Java中的常见英语词汇对于学习和工作至关重要。以下是一些关键概念的详细解释: 1. **Object-oriented (面向对象)**:Java是一种面向对象的语言,这意味着它的设计哲学是基于对象,每个对象都有特定的...

    java容器

    Java容器是Java编程中一个非常重要的概念,它主要用于管理和组织对象。在Java中,容器可以是集合、框架或服务提供者等,它们为其他对象提供存储、管理以及生命周期控制等功能。容器广泛应用于企业级开发,尤其是在...

    400 道Java求职常见面试(笔试)真题与解析.pdf

    要使用EJB,它必须部署在兼容的应用服务器容器中,如IBM WebSphere、BEA WebLogic等。EJB客户端不是直接访问EJB组件,而是通过容器间接访问。容器提供管理服务,如事务管理、安全性、生命周期管理等。EJB容器是EJB...

    JAVA 容器类应用

    在Java中,容器类包括数组、列表、队列、集、映射等数据结构,它们为开发者提供了灵活的数据处理能力。本篇文章将深入探讨Java容器类的应用,重点关注其核心特性和常见用法。 首先,我们来了解容器类的基础——`...

Global site tag (gtag.js) - Google Analytics