1、Set和Map的关系:

Set代表一种集合元素无序、不可重复的集合,Map代表一种由多个key-value对组成的集合。

Set的集合继承体系:

Map关系集合

Map集合的key特征:所有key不能重复,key之间没有顺序。Map集合的所有key将具有set集合的特征。

对Set做改造可将Set改造成Map集合;

2、HashSet和HashMap的区别和联系:
    对于HashSet,系统采用Hash算法决定集合元素的存储位置;对于HashMap,系统将value当成key的附属物,系统根据hash算法决定key的存储位置,value总是紧随key存储。

HashSet通过封装一个HashMap对象来存储所有的集合元素,所有放入HashSet中的集合元素实际上由HashMap的key来保存,而HashMap的value则存储了一个PERSENT,它是一个静态的Object对象。

HashSet的add()方法添加元素时实际上转变为调用HashMap的put()方法来添加key-value对,当新放入的hashmap的Entry中的key与集合中原有的Entry的key相同(hashCode()返回值相等,通过equals比较也返回true)时,新添加的Entry的value将覆盖原来Entry的value,但key不会有任何改变。如果向hashSet中添加一个已经存在的元素,新添加的集合元素不会覆盖已有的集合元素。

3、TreeMap和TreeSet的区别和联系:

TreeSet底层采用一个NavigableMap来保存TreeSet集合的元素,NavigableMap是一个接口,底层使用TreeMap来保存Set集合中的所有元素。TreeSet里绝大部分方法都是直接调用TreeMap方法来实现。

TreeMap采用一种被称为“红黑权”的排序二叉树来保存Map中的每个Entry——每个Entry都被当成红黑树的一个节点来对待。向TreeMap添加元素时,系统都要将该Entrty当成一个新节点,保证TreeMap中所有key总是由小到大排列的。TreeMap添加元素、取出元素的性能都比HashMap低。

4、Map和List

Map集合是一个关联数组,包含两组值,key组成的集合可以组成一个set集合,value组成的集合可以组成List集合。

Map接口提供get(K key)方法,允许Map对象根据key来获取value;

List接口提供get(int index)方法,允许List对象根据元素索引来取得value;

List相当于所有key都是int型的Map,也可以说Map相当于索引是任意类型的List;

5、ArrayList和LinkedList

List集合的实现类有三个:ArrayList、Vector和LinkedList。Vector还有一个Stack子类,Stack在Vector父类的基础上增加了五个方法。Stack是一个线程安全的类,Vector也是一个线程安全的类。

从序列化机制角度看,ArrayList的实现比Vector的实现更安全,Vector是ArrayList的线程安全版本。

当取元素时ArrayList性能大大优于LinkedList,因为ArrayList底层以数组来保存集合元素。当程序需要添加或删除元素时,ArrayList必须对底层数组元素整体移动,如果添加元素导致集合长度超过底层数组长度,ArrayList必须创建一个长度为原来1.5倍的数组,再由垃圾回收机制回收原有数组,开销较大。LinkedList,在插入删除元素上,性能高于ArrayList。

6、迭代器接口Iterator

用于迭代各种Collection集合,用iterator()方法返回一个Iterator用于遍历该集合中的元素。用remove()方法删除刚迭代的集合元素。

转载于:https://www.cnblogs.com/yzm10/p/7529295.html

Java集合Set、Map、HashSet、HashMap、TreeSet、TreeMap等相关推荐

  1. 【Java集合之Map】HashMap、HashTable、TreeMap、LinkedHashMap区别

    Java为数据结构中的映射定义了一个接口java.util.Map,它有四个实现类,分别是HashMap.HashTable.LinkedHashMap和TreeMap.本节实例主要介绍这4中实例的用 ...

  2. 三十九、Java集合中的HashSet和TreeSet

    @Author:Runsen @Date:2020/6/6 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...

  3. Java 集合系列 16 HashSet

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  4. Java集合框架之三:HashMap源码解析

    Java集合框架之三:HashMap源码解析 版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! HashMap在我们的工作中应用的非常广泛,在工作面试中也经常会被问到,对于这样一个重要的集 ...

  5. Java集合类之Map的HashMap之常用方法的使用

    Java集合类之Map的HashMap之常用方法的使用 任务描述 使用 HashMap 集合操作菜单 相关知识 1.什么是 HashMap HashMap 是 Map 接口的实现类,它存储的内容是键值 ...

  6. java:集合(Collection【List(ArrayList Vector LinkedList)、set】、Map【hashMap、treeMap、hashtable、properties】)

    目录 集合的框架体系 一.Collection接口和常用方法 1.1   List接口和常用方法 1.1.1   ArrayList底层结构和源码分析 1.1.2 Vector底层结构 1.1.3 L ...

  7. Java 集合系列14之 Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)

    概要 学完了Map的全部内容,我们再回头开开Map的框架图. 本章内容包括: 第1部分 Map概括 第2部分 HashMap和Hashtable异同 第3部分 HashMap和WeakHashMap异 ...

  8. java hashmap api_JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API

    一.Map简述 1.1.简述 public interface Map 类型参数:K - 此映射所维护的键的类型 keyV - 映射值的类型 value该集合提供键--值的映射.key不能重复,一对对 ...

  9. Java Map以及HashMap、TreeMap、HashTable

    Map 本文主要介绍Map接口以及其主要实现类:HashMap.LinkedHashMap.TreeMap.Hashtable.Properties,其中包括HashMap.TreeMap的底层实现原 ...

  10. 集合类(collection、List、Set、Map、HashMap、TreeMap、、Properties、泛型类、可变长参数、增强for循环、Collections、数组与链表)

    集合类 0.集合类概述 1.Collection 概念 (1)Collection接口的API (2)Iterator接口(collection集合的遍历) 案例:collection集合存储学生对象 ...

最新文章

  1. 采用编码器-解码器匹配语义分割的图像压缩
  2. C# 图片文件文本string格式 传输问题
  3. leetcode 507. 完美数(Java版)
  4. MySQL数据库创建用户root@%
  5. [NOI2013]树的计数
  6. Compound供应量突破70亿美元
  7. 集合(ArrayList、Hashtable、泛型集合)
  8. 安卓系统组态软件_力臻智合分布式组态软件安卓版解决方案
  9. Premiere cc 2019安装教程及安装包
  10. 安徽省地理信息系统应用成果
  11. 学习笔记(26):NumPy数据分析-NumPy 统计函数-var方差
  12. 简述er图的作用_ER图的理解
  13. pearson特征选择matlab,常用的特征选择方法之 Pearson 相关系数
  14. 用IDEA在Windows上搭建chisel代码阅读环境——以香山处理器为例
  15. 自动化测试之数据驱动测试
  16. Android程序报错:Anroid 6.0 权限问题java.io.FileNotFoundException: ……:open failed: EACCES (Permission denied)
  17. 东华OJ基础85——手机短号
  18. 【Druid】(四)Apache Druid 部署和配置(单机版 / Docker 容器版 / Kubernetes 集群版)
  19. Linux命令之计算器bc
  20. Python 学生管理系统+mysql+Flask

热门文章

  1. 自学前端不用慌张!零基础自学前端必备手册,学成月薪12K
  2. 一些Vue开发小技巧,让你开发更便捷
  3. docker 删除image_不是吧!Docker上手,看会觉得自己又行了!
  4. Java教程:Java break语句:跳出循环
  5. Java教程:Java是什么?Java的特点有哪些?
  6. ice 服务java连接,java - ICE中的连接计数 - 堆栈内存溢出
  7. 字符界面运行mysql_详解linux系列之字符界面下MySQL+apache+php的源代码安装
  8. notepad++查看16进制文件
  9. STM8学习笔记---按键KEY
  10. pyqt5使用按钮跳转界面