接口:红色;实现类:黑色字体

一、Collection集合

Collection

|_____Set(HashSet)

|      |_____SortedSet(TreeSet)

|_____List(ArrayList,LinkedList,Vector )

Collection:集合层次中的根接口,JDK没有提供这个接口的实现类。

List: 有序(按照放入的顺序)、可以重复、有下标。

Set:无序、不可以重复、无下标。

SortedSet:是Set接口的子接口,SortedSet中的元素是有序的(按字母升序)。

通过 Comparable接口的compareTo方法,实现元素是有序的。放入的元素都必须实现 Comparable 接口(或者被指定的Comparator 所接受)。

List接口的实现类的区别:

ArrayList :本质上是一个数组。线程不安全。查询(get/set)快,增删(add/remove)慢。

LinkedList: 本质上是一个双向链表。线程不安全。查询(get/set)慢,增删(add/remove)快。

Vector :和ArrayList几乎是完全相同的,唯一的区别在于Vector是同步类(synchronized),是线程安全的。

二、Map集合

Map(HashMap,Hashtable)

|_____SortedMap(TreeMap)

Map:存储的是key-value对,不能包含重复的key,可以有重复的value。

SortedMap:Map的子接口SortedMap是一个按升序排列key的Map。

HashMap、Hashtable和TreeMap的区别

HashMap :线程不安全。key和value都可以是null。元素是无序的。底层是哈希表数据结构。

Hashtable:线程安全。key和value都不可以是null。元素是无序的。底层是哈希表数据结构。

TreeMap:线程不安全。key和value都不可以是null。元素是有序的(按字母升序)。底层是二叉树数据结构。

三、Map的key、Set的值如何实现不重复

Map放相同的key,之后的覆盖之前的

Map map=new  HashMap();

map.put(“name”,”张三”);

map.put(“name”,”王五”);------有效,覆盖之前的

Set放相同的元素时,第一个是有效的,之后的不会被放入

Set set=new HashSet();

set.add(“111”);---有效

set.add(“222”);----判断已有,不会放入

1、HashMap的put与HashSet的add

由于 HashSet 的 add() 方法添加集合元素时实际上转变为调用 HashMap 的 put() 方法来添加 key-value 对。HashMap 的 put() 方法首先调用.hashCode() 判断返回值相等,如果返回值相等则再通过 equals 比较也返回 true,最终认为key对象是相等的已经在HashMap中存在了。

2、TreeMap的put与TreeSet的add

TreeMap中调用put方法添加键值时,调用对象的它的 compareTo(或 compare)方法对所有键进行比较,此方法饭回0,则认为两个键就是相等的。

TreeSet添加元素的时候,调用compareTo或compare方法来定位元素的位置,也就是返回compareTo或compare返回0则认为是同一个位置的元素,即相同元素

java map collection_java 集合----Map、Collection相关推荐

  1. Java中的集合(Collection,Map)

    集合类体系结构 Collection集合 Collection集合概述 是单例集合的顶层接口,它表示一组对象,这些对象也被成为Collection元素 JDK不提供此接口的任何直接实现,它提供更具体的 ...

  2. java 双列集合Map 万字详解

    目录 一.前言 二.概述 三.特点 四.常用方法 1. V put(K key, V value) : Δ代码演示 : 2. V get(Object key) : Δ代码演示 : 3. V remo ...

  3. Java基础进阶集合-map集合

    1.Map和Collection没有继承关系. 2.Map集合以key和value的方式存储数据:键值对 key和value都是引用数据类型. key和value都是存储对象的内存地址. key起到主 ...

  4. 2021年JAVA面试~初识集合Map(一)

    前言 有一天James独自去肯德基买饮料,身后排了个小男孩, 他转过身来对小男孩说:"小朋友,第二杯半价,这个优惠让给你吧,只要一半的钱哦. ""呵呵", 小男 ...

  5. Java基础(集合框架——Collection、List、Set、泛型)

    为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多 个对象的操作,就对对象进行存储,集合就是存储对象常用的一 种方式. 数组和集合类同是容器,有何不同? 数组虽然也可以存储 ...

  6. 2021年JAVA面试~初识集合Map(二)

    前言 各位靓仔好呀,我们接着讲讲Map集合, 我们知道HashMap是线程不安全的及不安全在哪里 今天主要介绍线程安全的Map 上一篇文章地址:https://blog.csdn.net/u01335 ...

  7. [Java复习02] 集合框架 Collection

    Q1 Collection java的集合以及集合之间的继承关系? 数组和链表的区别? 固定长度,连续内存,不能扩展,随机访问快,插入删除慢.链表相反 List, Set, Map的区别? List, ...

  8. 【Java笔记】集合(Collection接口)的使用

    面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储.使用 Array 存储对象方面具有一些弊端,而 Java 集合就像一种容器,可以动态地把多个对象的引用放入容器中 ...

  9. Java、Set、Map集合框架知识大全,收藏备用

    前言 Java集合框架的知识在Java基础阶段是极其重要的,我平时使用List.Set和Map集合时经常出错,常用方法还记不牢, 于是就编写这篇博客来完整的学习一下Java集合框架的知识,如有遗漏和错 ...

最新文章

  1. PHP中的urlencode,rawurlencode和JS中的encodeURI,encodeURIComponent
  2. 51单片机C语言波特率十六进制,理解51单片机串口通信的波特率与USB转串口通信...
  3. Python 常见优化技巧,让你的程序溜溜的跑起来!
  4. jd-eclipse反编译插件的离线安装和使用
  5. 首发:徐亦达教授团队最新发表的两篇机器学习论文
  6. 动手动脑-Java重载
  7. html5 移动端单页面布局
  8. 华为云UGO正式亮相DTCC 2021,去“O”从此再无后顾之忧
  9. 超级账本执行董事:区块链将削弱谷歌、亚马逊和Facebook的市场力量
  10. 基于ZYNQ wifi方案实现与测试
  11. 云服务器虚拟化搭建,虚拟化搭建云服务器
  12. JavaScript网页购物车
  13. 22岁对于人生的感悟
  14. 214页(10万字)以数据驱动为核心的区域医疗数据中台
  15. 一、个人总结的菜鸟教程|sql教程的知识点(SQL教程)
  16. 基金的回报率计算公式
  17. 为什么360如此流氓却还有这么多人用?
  18. 什么是图灵完备语言?
  19. 超过了 PCH 的虚拟内存范围;请使用“-Zm120”或更大的命令行选项重新编译
  20. python修改文件格式为jpg_python将.ppm格式图片转换成.jpg格式文件的方法

热门文章

  1. SpringBoot-web开发(一): 静态资源的导入(源码分析)
  2. NVIDIA Turing Architecture架构设计(上)
  3. 2019个嵌入式市场研究,持续的C/C++优势
  4. CentOS7在防火墙开启与关闭以及端口操作
  5. 【CV】OpenCV(基于Python)学习笔记
  6. getCacheDir() 和 getFilesDir() 的区别
  7. Android SharedPreferences 的使用
  8. Error:(17, 0) SDK location not found. Define location with sdk.dir in the local.properties file or w
  9. Java并发编程(十一)——原子操作CAS
  10. 洛谷 1774 最接近神的人