`

集合类

    博客分类:
  • j2se
阅读更多

集合类

  • Set
    • HashSet
      • 优点:
          后台实现一个hash table 加速get和contains方法。后台使用数组保存
        缺点:
         默认大小为16, 如果超过则需要重新申请内存空间,大小为原来的两倍,并把原来的数据内容复制到
         新的内存空间中。
         线程不安全(需通过Collections.synchronizedList方法设置)
         加入的元素顺序会因其内部的hash排序而改变

        注:通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大,这会影响像get和put这样的操作。

    • LinkedHashSet
      • 优点:
          后台实现一个hash table 加速get和contains方法。后台使用链表保存
        缺点:
         默认大小为16, 如果超过则需要重新申请内存空间,大小为原来的两倍,并把原来的数据内容复制到
         新的内存空间中。
         线程不安全(需通过Collections.synchronizedList方法设置)
         加入的元素顺序会因其内部的hash排序而改变

        注:通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大,这会影响像get和put这样的操作。

    • TreeSet
      • 优点:
          通过一个HashMap来实现数据的保存,内部实现红黑树数据结构,使所有元素按升序保存。
          提供高效的get和contains方法,保存操作的效率为log(n)
        缺点:
         默认大小为16, 如果超过则需要重新申请内存空间,大小为原来的两倍,并把原来的数据内容复制到
         新的内存空间中(来自HashMap)。
         线程不安全(需通过Collections.synchronizedList方法设置)
         加入的元素升级排序而改变

        注:treeset对元素有要求,必须实现Comparable接口或是Comparator 接口)

        注:通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大,这会影响像get和put这样的操作。

    • CopyOnWriteArraySet
      • 优点:
         针对于对Set操作的情况有很多变化时使用,优其是在高并发的情况不想使用同步控制锁时
        缺点:
         消耗比较大的资料,每次作更新操作时,都会重新Copy一块内存后,再做合并操作。
  • List
    • ArrayList
      • 优点:
           使用数组,提供快速的get,add和iterate方法,占用比较小的内存空间
        缺点:
           线程不安全(需通过Collections.synchronizedList方法设置)
           insert和remove操作,非常慢(需要移动数组元素来实现)
           当size超过时,需要新建一个较大的数据(默认大小是10,增量是 (size * 3)/2 + 1,
           且把原来的数据都复制到新的上面)

    • LinkedList
      • 优点:
           使用链表结构,提供快速的add, insert, remove方法,占用比较小的内存空间
        缺点:
           线程不安全(需通过Collections.synchronizedList方法设置)
           get操作,非常慢(需要从head一级级遍历查找)

    • Vector
      • 优点:
         线程安全。
        缺点:
         相对于ArrayList效率要低。拥有ArrayList的缺点。
    • CopyOnWriteArrayList
      • 优点:
         针对于对List操作的情况有很多变化时使用,优其是在高并发的情况不想使用同步控制锁时
        缺点:
         消耗比较大的资料,每次作更新操作时,都会重新Copy一块内存后,再做合并操作。
    • TreeList(apache commons-collections)提供
      • 优点:
         基于二叉数  提供比较快速的get, add,insert,iterate,remove方法。其中get,add和iterate方法比ArrayList稍慢一点。
        缺点:
         相对于ArrayList和LinkedList占比较多的内存空间
         线程不安全(需通过Collections.synchronizedList方法设置)

  • Map
    • ConcurrentHashMap
      • 优点:
         基于二叉数  提供比较快速的get, add,iterate方法。默认大小的16.
         它是线程安全
        缺点:
         如果大小超过设定的大小时,效率会非常低。它会重新申请内存空间(原来空间的两倍),同时把原来的值复制到新内存空间上。
         

分享到:
评论

相关推荐

    C++编程:建造集合类实训

    C++编程:建造集合类实训 本文将详细讲解C++编程中集合类的实现,包括集合类的定义、添加元素、删除元素、判断集合是否为空或满、判断元素是否包含在集合中、计算集合中的元素总数、输出集合中的元素、求两个集合的...

    实现复数集合类 使用c++

    实现复数集合类 要求:1、实现两个类:集合类(Cassemblage )和复数类(Cmycomplex)。  2、输入:分别输入集合中元素个数和元素(实部和虚部)。  3、输出:按照复数模的大小从小到大输出,不考虑两个复数模相等...

    java集合类线程安全.doc

    Java 集合类线程安全 Java 集合框架是由 Java 平台标准版 1.2 引入的通用数据结构与算法框架。其灵活的面对对象设计受到了广大 Java 程序员的一致青睐,为 Java 平台的成熟奠定了坚实的基础。 线程安全不是一个...

    java集合类详解(set list ArrayList等java集合类详述)

    Java 集合类详解 Java 集合类是 Java 语言中的一种基本数据结构,用于存储和操作大量数据。集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、...

    java自定义集合类

    自定义集合类则是开发者根据特定需求扩展Java集合框架的行为,以满足个性化或特定业务场景的功能需求。以下是对"java自定义集合类"这一主题的详细解释。 首先,Java集合框架包括接口(如List、Set、Map)和实现这些...

    java集合类的代码

    Java集合类是Java编程语言中一个非常重要的概念,它提供了数据结构和算法的实现,使得在处理一组对象时更加高效和灵活。Java集合框架包括接口(如List、Set、Queue等)和实现这些接口的类(如ArrayList、HashSet、...

    第13讲 JAVA集合类.ppt

    Java集合类是Java编程语言中用于存储和管理对象的关键组件,它们构成了Java Collections Framework的核心。这个框架提供了一组高效、灵活的数据结构,使得开发者能够轻松地处理数据集合,而无需关心底层实现的复杂性...

    C#的6种常用集合类大比拼

    在C#编程语言中,集合类是处理数据结构的关键组件,它们提供了比传统数组更灵活、功能更丰富的数据存储方式。本文将深入探讨C#中六种常用的集合类,包括它们的特点、用法以及与其他数据结构如数组的区别,旨在帮助...

    VC++集合类,详细例子。

    MFC 集合类可以按形态和设计方案来分类。MFC 为三种类型的集合形态提供了类: 列表 数组 映射 MFC 还提供三种类型的设计方案: 不使用 C++ 模板。 使用由简单元素组成的基于 C++ 模板的集合。 使用由类型...

    Java集合类详解总结

    ### Java集合类详解总结 在Java编程中,集合框架(Collection Framework)是处理一组对象的强大工具,它提供了标准的数据结构来存储和操作这些对象。Java集合框架主要包括`Collection`、`Set`、`List`、`Queue`、`...

    java集合类演示源码

    集合类的框架为集合的实现者提供了大量的接口和抽象类,并对其中的某些机制给予了描述,例如,Iterator(迭代协议)。实现Comparable接口或Comparator接口,用户可以根据需要对集合中的元素进行排序。为了方便用户...

    泛型集合类的大概应用

    根据给定的信息,本文将详细解释“泛型集合类的大致应用”,重点在于Java中的泛型集合类,如`ArrayList`、`HashMap`等,并结合实际代码示例进行讲解。 ### 泛型集合类概述 在Java编程语言中,集合框架提供了一组...

    集合类框架图

    java集合类框架图

    控制台程序 集合类的应用

    在IT行业中,集合类是数据结构的一个重要组成部分,它们提供了组织和操作对象的方便方式。在本案例中,我们关注的是一个名为"Animals"的集合类,它扩展了Java中的集合框架,允许通过关键字来索引Animal对象。此外,...

    Week17_第9讲_泛型与集合类.pdf

    ### 泛型与集合类知识点总结 #### 一、泛型简介 - **定义**:泛型是Java SE 5.0引入的新特性,它允许程序员在编译时检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。 - **作用**: - ...

    Java基础----集合类汇总

    本文将深入探讨Java集合类的汇总,包括List、Set和Map这三大核心接口及其实现类。 首先,让我们从List接口开始。List是一种有序的集合,允许有重复元素,并且支持通过索引来访问元素。ArrayList和LinkedList是List...

    Java集合排序及java集合类详解.pdf

    ### Java集合排序及Java集合类详解 #### 一、集合框架概述 集合框架是Java编程语言的核心组件之一,用于组织和操作数据集。Java集合框架提供了多种数据结构,包括列表(List)、集(Set)和映射(Map),这些数据结构...

    java反射,获取所有属性、方法以及List集合类

    本篇文章将深入探讨如何使用Java反射来获取一个类的所有属性、方法,并处理List集合类。 首先,让我们了解Java反射的基础概念。在Java中,`java.lang.Class`类代表运行时的类信息。我们可以使用`Class.forName()`...

    整数集合类的各种操作

    在编程领域,集合类是数据结构中的重要组成部分,主要用于存储一组不重复的元素。在Java中,`java.util.Set`接口及其子接口如`HashSet`、`TreeSet`等提供了整数集合的操作。本篇文章将深入探讨如何实现整数集合的...

    Cloud_Foundry中Java应用集合类内存泄漏检测_叶瑞浩.caj

    本文基于针对集合类对象的内存泄漏检测方案实现了口oudFoundry云平台 中Java应用内存泄漏的检测,通过监控集合类对象的内存消耗和集合内元素的 使用情况,得出对象内存泄漏的可能性大小,...

Global site tag (gtag.js) - Google Analytics