JAVA高级进阶07集合-Collections&Map&Stream&递归

第七天、集合-Collections&Map&Stream&递归

Collections

可变参数

可变参数

  • 就是一种特殊形参,定义方法,构造器的形参列表里,定义格式是 : 方法名 (数据类型 ... 形参名称){ }

可变参数的特点和好处

  • 特点 : 可以不传数据给她,可以穿一个或者同时传多个数据给他;也可以传一个数组给它

  • 好处 : 常常用来灵活的接收数据

可变参数的注意事项

  • 可变参数在方法内部就是一个数组

  • 一个形参列表中可变参数只能有一个

  • 可变参数必须放在形参列表的最后面

Collections

Collections

  • 是一个用来操作集合的工具类

Collections提供的常用静态方法

Map集合

概述

认识Map集合

  • Map集合称为双列集合,一次需要存一对数据做为一个元素, 格式:{key1=value1 , key2=value2 , key3=value3 , ...}

  • Map集合的每个元素分为两部分:key和value,key称为键,value称为值,整体叫键值对,因此Map也叫“键值对集合”

  • Map集合的所有键是不允许重复的,但值可以重复,键和值是一一对应的,每一个键只能找到自己对应的值

Map集合在什么业务场景下使用

  • 需要存储一一对应的数据时,就可以考虑使用Map集合来做

Map集合体系

Map集合体系的特点

  • HashMap: 无序、不重复 (用的最多)

  • LinkedHashMap :有序、不重复

  • TreeMap: 按照大小默认升序排序、不重复

常用方法

为什么要先学习Map的常用方法 ?

  • Map是双列集合的祖宗,它的功能是全部双列集合都可以继承过来使用的

Map的常用方法如下:

遍历方法

Map集合的遍历方式一

Map集合的遍历方式二

Map集合的遍历方式三

HashMap

HashMap集合的底层原理

  • HashMap跟HashSet的底层原理是一模一样的,都是基于哈希表实现的

  • 实际上:原来学的Set系列集合的底层就是基于Map实现的,只是Set集合中的元素只要键数据,不要值数据而已

哈希表

  • JDK8之前,哈希表 = 数组+链表

  • JDK8开始,哈希表 = 数组+链表+红黑树

  • 哈希表是一种增删改查数据,性能都较好的数据结构

HashMap集合的底层原理基于哈希表实现

  • HashMap集合是一种增删改查数据,性能都较好的集合

  • 但是它是无序,不能重复,没有索引支持的(由键决定特点)

  • HashMap的键依赖hashCode方法和equals方法保证键的唯一

  • 如果键存储的是自定义类型的对象,可以通过重写hashCode和equals方法,这样可以保证多个对象内容一样时,HashMap集合就能认为是重复的

LinkedHashMap

LinkedHashMap集合的原理

  • 底层数据结构依然是基于哈希表实现的,只是每个键值对元素又额外的多了一个双链表的机制记录元素顺序(保证有序)

  • 实际上:原来学习的LinkedHashSet集合的底层原理就是LinkedHashMap

TreeMap

TreeMap

  • 特点:不重复、无索引、可排序(按照键的大小默认升序排序,只能对键排序)

  • 原理:TreeMap跟TreeSet集合的底层原理是一样的,都是基于红黑树实现的排序

TreeMap集合同样也支持两种方式来指定排序规则

  • 让类实现Comparable接口,重写比较规则

  • TreeMap集合有一个有参数构造器,支持创建Comparator比较器对象,以便用来指定比较规则

补充知识:集合的嵌套

  • 指的是集合中的元素又是一个集合Map<String,List<String>>

Stream

认识Stream

什么是Stream?

  • 也叫Stream流,是Jdk8开始新增的一套API (java.util.stream.*),可以用于操作集合或者数组的数据。

  • 优势: Stream流大量的结合了Lambda的语法风格来编程,提供了一种更加强大,更加简单的方式操作集合或者数组中的数据,代码更简洁,可读性更好

说说Stream流处理数据的步骤是什么?

  • 先得到集合或者数组的Stream流(获取)

  • 然后调用Stream流的方法对数据进行处理(操作)

  • 获取处理的结果(终结)

Stream的常用方法

获取Stream流

  • 获取单列集合 的Stream流

  • 获取 数组 的Stream流

  • 获取 零散数据 的Stream流

Stream流常见的中间方法

  • 中间方法指的是对stream流进行操作的方法, 他们调用完成后会返回新的Stream流,可以继续使用(支持链式编程)

Stream流常见的终结方法

  • 终结方法指的是调用完成后,不会返回新Stream了,没法继续使用流了

  • 它的作用是对流中的数据进行筛选(遍历、最大、最小、统计个数)

  • 收集方法就是把Stream流操作后的结果转回到集合或者数组中去返回。

  • 36
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值