`

集合总结

阅读更多
一 ,java集合框架概览。



 一,简述:
1. Collection接口
(1) Set接口
常用的实现类有:HashSet、TreeSet
(2) List接口
常用的实现类有:ArrayList、LinkedList、Vector
(3) Map接口
常用的实现类有:HashMap、TreeMap

 二,常用实现类。

 List:集合中的元素有序,元素值可重复。

 List 有两个常用的实现类,ArrayList和LinkedList

 

1,ArrayList:长度可变的的数组

(1)数据结构:一个长度可变的数据

(2)特点:查找快,增删改速度相对较慢。

        当调用默认构造方法创建ArrayList对象的时候,默认会创建一个长度为10的数组。

        当达到数组长度上限的时候,会1.5倍的增长长度

 

 

2,LinkedList

(1)数据结构:双向链表

(2)特点:增删改速度较快,查询的速度较慢。

 

Set:集合中的元素无序,元素不可重复;

3,HashSet

(1)数据结构:哈希表(用HashMap中的key实现的)

(2)特点:不能出现“重复”元素,集合中的没有顺序。

         允许出现null,但是只能出现一次。为了HashSet可以正常工作,放入其中的元素需要重写 hashCode 和equals方法

         因为结合中的元素不能重复,当添加一个元素的时候会先判断hashcode值是否相同(hascode算出的是哈希表中的索引,这个索引下可能会有多个元素)

         ,然后在调用equals逐个进行比较(不了解哈希表的人 可以baidu/google)

         这种比较方式是高效的。如果仅仅用equals的话,当数据很多的时候逐个比较起来会很低效。

 

4,TreeSet

(1)数据结构:红黑树,也就说是一棵自平衡的排序二叉树,这样就可以保证当需要快速检索指定节点(利用TreeMap中的Key实现的)。

(2)特点:不可重复,但是有序。能对集合中的对象进行排序,有两种排序的方式

         第一,集合中的元素需要实现Comparable接口。内部会调用compareTo()方法进行比较

         第二,在创建TreeSet的时候在构造函数中传入一个比较器Comparator。集合中的元素就会按照比较器中规定的方式进行排序(这个方式是优先执行)

 

Map key-value一 一 对 应。

Map 常见的实现类 HashMap TreeMap。(key的特点 已经在上面的Set中说过了)

 5,HashMap

(1)数据结构:用哈希表实现的map结构,存储形式都是键值对

(2)特点:key不能重复,无序。 value 可以重复 ,允许 null key null value

 

6,TreeMap

(1)数据结构:用红黑树实现的map结构,存储形式都是键值对

(2)特点:key有序,不可重复。value可以重复

 

7,vector

 (1)数据结构:数组

 (2)特点:线程安全,如果达到数组长度上限,2倍增长,因为是线程安全的所以效率低于ArrayList

 

8,HashTable

 (1)数据结构:哈希表实现的map结构

 (2)特点:线程安全,所以效率HashMap 不允许出现空 key value

 

三,使用集合类的一些技巧

      1,如果使用到堆栈,队列,首先应该考虑List。如果涉及大量的 增加 删除 操作应该考虑 LinkedList

如果涉及到 大量的随机访问 应该考虑 ArrayList ,另外Arraylist 默认初始化一个10长度的数组,

增长倍数是1.5倍,所以如果要给ArrayList添加大量数据的时候应该 初始化一个较大的 Arraylist

或者调用 ensureCapacity(int minCapacity) 增加 ArrayLisy的长度。在一些主球效率的

程序中可以用数组去代替ArrayLisy,因为使用数组(Array)避免了同步、额外的方法调用和不必要的

重新分配空间的操作。

 

     2,单线程中使用 非同步类的 效率要高 LinkedList、ArrayList、HashSet、TreeSet、HashMap、            TreeMap 多线程中 应该考虑的是“并发容器” 而不是“同步容器” 并发容器有:ConcurrentHashMap

 CopyOnWriteArrayList 等等 性能要高于 同步容器 Vector 和 HashTable

 

     3,返回值类型尽量是接口,为了 如果需要更改 数据结构,例如把数据结构 ArrayList 更改为

LinkedList 的时候 调用端,也就是客户端代码不用改变。

 

     4,注意集合中的一些方法 remove(Object obj)、indexOf(Object obj)、contains(Object obj)

会遍历集合 调用 equals 方法。如果集合很大,效率会比较低。

 

     5,在操作底层为哈希表的集合的时候,注意合理重写 equals 和 hashCode方法

 

     6,注意 map 中put (key,value) 一个元素的时候 如果 put的key已经“存在” value 新值 替换旧值,

并且把旧值返回。

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        

  • 大小: 102.9 KB
分享到:
评论

相关推荐

    集合总结ppt,集合总结ppt

    集合总结ppt

    集合总结及扩展1

    集合总结及扩展1 本节内容总结了集合的继承体系、集合的接口、抽象类、具体类的概念,并详细介绍了Collection、Iterator、泛型、List、Set、Map等集合框架中的重要知识点。 1. 集合继承体系 集合继承体系中,接口...

    java集合总结副本共19页.pdf.zip

    这个“java集合总结副本共19页.pdf.zip”压缩包很可能是对Java集合框架的详细讲解,涵盖了重要的知识点,包括ArrayList、LinkedList、HashSet、HashMap、TreeSet、TreeMap等主要集合类,以及它们的特点、性能和应用...

    java集合总结.pdf

    Java集合总结 Java集合类是Java语言中的一种数据结构,用于存储和操作大量数据。Java集合类提供了多种实现,包括List、Set、Map等,用于解决不同的数据存储和操作问题。本文将从Java集合类的基本概念、Collection...

    python冒泡排序-16-集合总结.ev4.rar

    标题中的“python冒泡排序-16-集合总结”表明这是一个关于Python编程的教程,具体聚焦于冒泡排序算法和集合的综合应用。冒泡排序是计算机科学中最基础的排序算法之一,而集合在Python中则是一种无序、不重复元素序列...

    ios各种手势使用集合总结,适合ios新手

    本资源“ios各种手势使用集合总结”为初学者提供了一个良好的学习平台,帮助他们快速掌握iOS手势的运用。下面我们将详细探讨其中涉及的关键知识点。 1. **轻扫(Swipe Gestures)** - **UIPanGestureRecognizer**...

    集合总结图.xmind

    非常详细的集合总结图,可以让需要的朋友根据这个xmd好好复习

    高中数学必修一第一章集合总结..ppt

    **高中数学必修一第一章集合总结** 集合是数学的基础概念之一,主要包含了以下几个知识点: 1. **集合的含义与表示** - **确定性**:集合中的元素是确定的,不存在模棱两可的情况。 - **互异性**:集合内的元素...

    java集合总结.md

    java集合总结.md

    集合总结图.png

    集合总结图!超详细!大神总结! 必下载资源!

    "Java集合总结之Collection整体框架"用到的图片

    "Java集合总结之Collection整体框架"用到的图片

    collecter集合总结

    集合总结 集合是一个容器,用于存储多个元素。在 Java 中,集合可以分为两大类:有顺序的集合(List)和无顺序的集合(Set)。本文将对集合的基本概念、种类、方法和迭代器进行总结。 集合的基本概念 集合是一个...

    ---java---集合总结笔记

    ---java---集合总结笔记

    高中数学必修一集合总结PPT学习教案.pptx

    高中数学必修一集合总结PPT学习教案.pptx

    高中数学集合总结+题型分类+完美解析.doc

    高中数学集合总结+题型分类+完美解析.doc

    Java集合总结.txt

    单个集合的学习路线:使用->做实验->画图->分析源码 集合:大小可变的序列,只能存放对象 集合和数组的区别: 1.集合是大小可变的序列,数组在声明后,长度不可变 2.数组只能存放声明时指定的一种数据类型,集合...

    Java集合框架总结

    ### Java集合框架总结 #### 一、Java集合框架概述 Java集合框架是Java标准库的一部分,它提供了一系列的接口和类来存储和操作各种类型的对象集合。这些接口和类遵循一致的设计模式,使得开发人员可以方便地管理和...

    C# 常用集合总结

    本文档对C#的几种常见的集合(BitArray, Dictionary, Hashtable, NameValueCollection, Queue, Stack)的用法作了归纳,每种集合都附有完整的测试代码。(另外一种常见集合ArrayList收录在另外一份文档:使用总结>中)

    JAVA-集合总结

    JAVA集合是Java编程中至关重要的概念,主要用于存储和操作对象。集合类的特点在于它们只用于存储对象,且长度可变,允许存储不同类型的对象。与数组相比,集合提供了更大的灵活性,因为数组的长度是固定的,且只能...

Global site tag (gtag.js) - Google Analytics