一,简述:
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 新值 替换旧值,
并且把旧值返回。
相关推荐
集合总结ppt
集合总结及扩展1 本节内容总结了集合的继承体系、集合的接口、抽象类、具体类的概念,并详细介绍了Collection、Iterator、泛型、List、Set、Map等集合框架中的重要知识点。 1. 集合继承体系 集合继承体系中,接口...
这个“java集合总结副本共19页.pdf.zip”压缩包很可能是对Java集合框架的详细讲解,涵盖了重要的知识点,包括ArrayList、LinkedList、HashSet、HashMap、TreeSet、TreeMap等主要集合类,以及它们的特点、性能和应用...
Java集合总结 Java集合类是Java语言中的一种数据结构,用于存储和操作大量数据。Java集合类提供了多种实现,包括List、Set、Map等,用于解决不同的数据存储和操作问题。本文将从Java集合类的基本概念、Collection...
标题中的“python冒泡排序-16-集合总结”表明这是一个关于Python编程的教程,具体聚焦于冒泡排序算法和集合的综合应用。冒泡排序是计算机科学中最基础的排序算法之一,而集合在Python中则是一种无序、不重复元素序列...
本资源“ios各种手势使用集合总结”为初学者提供了一个良好的学习平台,帮助他们快速掌握iOS手势的运用。下面我们将详细探讨其中涉及的关键知识点。 1. **轻扫(Swipe Gestures)** - **UIPanGestureRecognizer**...
非常详细的集合总结图,可以让需要的朋友根据这个xmd好好复习
**高中数学必修一第一章集合总结** 集合是数学的基础概念之一,主要包含了以下几个知识点: 1. **集合的含义与表示** - **确定性**:集合中的元素是确定的,不存在模棱两可的情况。 - **互异性**:集合内的元素...
java集合总结.md
集合总结图!超详细!大神总结! 必下载资源!
"Java集合总结之Collection整体框架"用到的图片
集合总结 集合是一个容器,用于存储多个元素。在 Java 中,集合可以分为两大类:有顺序的集合(List)和无顺序的集合(Set)。本文将对集合的基本概念、种类、方法和迭代器进行总结。 集合的基本概念 集合是一个...
---java---集合总结笔记
高中数学必修一集合总结PPT学习教案.pptx
高中数学集合总结+题型分类+完美解析.doc
单个集合的学习路线:使用->做实验->画图->分析源码 集合:大小可变的序列,只能存放对象 集合和数组的区别: 1.集合是大小可变的序列,数组在声明后,长度不可变 2.数组只能存放声明时指定的一种数据类型,集合...
### Java集合框架总结 #### 一、Java集合框架概述 Java集合框架是Java标准库的一部分,它提供了一系列的接口和类来存储和操作各种类型的对象集合。这些接口和类遵循一致的设计模式,使得开发人员可以方便地管理和...
本文档对C#的几种常见的集合(BitArray, Dictionary, Hashtable, NameValueCollection, Queue, Stack)的用法作了归纳,每种集合都附有完整的测试代码。(另外一种常见集合ArrayList收录在另外一份文档:使用总结>中)
JAVA集合是Java编程中至关重要的概念,主要用于存储和操作对象。集合类的特点在于它们只用于存储对象,且长度可变,允许存储不同类型的对象。与数组相比,集合提供了更大的灵活性,因为数组的长度是固定的,且只能...