集合类之Collection接口和Map接口

先上图:

  

一、自己了解

  Java的集合类主要有List、Set和Map三大类,其中,List和Set是Collection接口一脉,Map接口自成一脉。

  其中,还有两个工具类Arrays和Collections

二、学习了解

  1.List

    List的特性是按顺序插入,可重复,允许null值。实现List接口的集合主要有:ArrayList,LinkedList,Vector和Stack。

    简单地讲一下:

    ArrayList是动态数组,底层是数组,默认初始化大小是10,可以动态扩容1.5倍,线程不安全。适用于随机访问。

    LinkedList底层是双向链表,线程不安全。由于是双向链表,访问时需要从头部或者尾部进行遍历,适用于插入删除比较多的操作

    Vector底层也是数组,类似于ArrayList,但是它是线程安全的。

    Stack是继承Vector类的,实现了一个先进后出的栈结构,其中Stack提供了额外的5个方法。基本的push和pop操作,以及peek操作,empty方法判断栈空,search方法检测一个元素在栈中的位置。Stack刚创建后是一个空栈。

  2.Set

    Set的特性是无序,不可重复,允许null值但只允许一个。实现Set接口的集合主要有HashSet、TreeSet、EnumSet

    HashSet底层是用HashMap实现的,用哈希表实现的(数组+链表)

    TreeSet底层是用TreeMap实现的,用的是红黑树实现的。

  3.Map

    上面讲的Collection叫做集合,Map叫做映射。如下图:

    图来源Java3y

    Map集合的特点:将键映射到值得对象,一个映射不能包含重复的键,每个键最多只能映射一个值。

    Map与Collection的区别在于Map是以键值成对存储的,键是唯一的,值是可以重复的;Collection集合存在元素是单独的,其中Set是唯一的,List是可重复的。

    要点在于Map针对键,Collection针对值。

三、 深入了解(基于JDK1.8)

1.LinkedList ArrayList Vector的区别

  


区别之处


ArrayList


LinkedList


Vector


底层实现


基于动态数组


基于双向链表


基于动态数组


初始容量


10


10


扩容大小


增长原数组大小的50%


增长原数组大小的100%


是否线程安全


不安全


不安全


安全


各自优点


适用随机访问,查询效率比LinkedList和Vector高


插入速度快,适用于插入和删除较多的操作。


查询效率比ArrayList低,适用于数据量较大的数据

2.HashMap HashTable ConcurrentHashMap的区别

  


区别


HashMap


HashTable


ConcurrentHashMap


TreeMap


底层实现


数组+链表+红黑树


数组+链表


JDK1.7 ReentrantLock+Segment+HashEntry

JDK1.8

Synchronized+CAS+Node+红黑树


红黑树


初始容量


16(2的n次幂)


11


16


负载因子


0.75


0.75


0.75


扩容大小


原大小的2倍


原大小的2倍+1


原来的2倍


是否线程安全


不安全


安全


安全


不安全


各自特点


HashMap可以将空值作为一个表的条目的key或value


已经过时


ConcurrentHashMap的key和Value都不能为null


TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap

3.HashSet与HashMap   TreeSet与TreeMap的关系

  HashSet依赖HashMap

  

   TreeSet依赖TreeMap

  

  

原文地址:https://www.cnblogs.com/weiziqiang/p/9043619.html

时间: 2024-11-10 14:49:13

集合类之Collection接口和Map接口的相关文章

List接口和Set接口和Map接口的of方法

只适用于List接口和Set接口和Map接口,不能改变,不允许有重复元素: 原文地址:https://www.cnblogs.com/wmqiang/p/10663856.html

JAVA中Collection接口和Map接口的主要实现类

Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的元素而另一些不行.一些能排序而另一些不行.Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set. 所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collectio

java.util (Collection接口和Map接口)

1:Collection和Map接口的几个主要继承和实现类                  1.1  Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的元素而另一些不行.一些能排序而另一些不行.Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的"子接口"如List和Set. 如

Java中集合框架,Collection接口、Set接口、List接口、Map接口,已经常用的它们的实现类,简单的JDK源码分析底层实现

(一)集合框架: Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(实现接口的类).所有抽象出来的数据结构和操作(算法)统称为集合框架. 程序员在具体应用的时候,不必考虑数据结构和算法实现细节,只需要用这些类创建一些对象,然后直接应用就可以了,这样就大大提高了编程效率. (二)集合框架包含的内容: (三)集合框架的接口(规范)   Collection接口:存储一组不唯一,无序的对象 List接口:存储一组不唯一,有序的对象 Set接口:存储一组唯一,无序的对象 Map接口:

List接口、Set接口和Map接口

1.List和Set接口自Collection接口,而Map不是继承的Collection接口 Collection表示一组对象,这些对象也称为collection的元素;一些 collection允许有重复的元素,而另一些则不允许;一些collection是有序的,而另一些则是无序的;JDK中不提供此接口的任何直接实 现,它提供更具体的子接口(如 Set 和 List)实现;Map没有继承Collection接口,Map提供key到value的映射;一个Map中不能包含相同key,每个key只

Java基础—集合2Set接口和Map接口

第一讲 Set 一 概述 Set:1. 元素存储无下标,所以元素是无序(存入和取出的顺序不一定一致 2. 元素不可以重复 |--HashSet:底层数据结构是哈希表.线程不同步. 保证元素唯一性的原理:判断元素的hashCode值是否相同.如果相同,还会继续判断元素的equals方法,是否为true. |--TreeSet:可以对Set集合中的元素进行排序.默认按照字母的自然排序.底层数据结构是二叉树.保证元素唯一性的依据:compareTo方法return 0. Set集合没有特有的功能,Se

Java集合排序及java集合类详解--(Collection, List, Set, Map)

1         集合框架 1.1         集合框架概述 1.1.1         容器简介 到目前为止,我们已经学习了如何创建多个不同的对象,定义了这些对象以后,我们就可以利用它们来做一些有意义的事情. 举例来说,假设要存储许多雇员,不同的雇员的区别仅在于雇员的身份证号.我们可以通过身份证号来顺序存储每个雇员,但是在内存中实现呢?是不是要准备足够的内存来存储1000个雇员,然后再将这些雇员逐一插入?如果已经插入了500条记录,这时需要插入一个身份证号较低的新雇员,该怎么办呢?是在内

Java基础之集合框架(Collection接口和List接口)

首先我们说说集合有什么作用. 一.集合的作用 1.在类的内部,对数据进行组织: 2.简单而快速的搜索大数量的条目: 3.有的集合接口,提供一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关元素: 例如:做广播操的时候,可以将学生插入到某排某列,反之也可以叫某排某列中的学生出列. 4.有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型. 例如:在吃饭的时候,众多铝饭盒中如何区别是自己的呢?在饭盒上刻独有的标志或贴纸条,这个标志和

增强for循环、Map接口遍历、可变参数方法

增强for循环 1.for循环能做得事情,增强for循环大部分都能做(如果要想获得下标的时候就必须使用简单for循环了) 2.增强for有时候能够方便的处理集合遍历的问题,但是集合的标准遍历是使用迭代器 3.在集合框架中体现出了它的强大之处 Map接口遍历 Map接口的遍历: 1.第一种方法 使用map.values()方法,先把value的值都放在一个Collection集合中. 2.第二种方法 使用map.entrySet()方法(推荐使用) 3.第三种方法 使用map.keySet()方法