01 概述
02 常用方法
03 遍历方式
【快捷键】:ctrl+alt+v
【说明】:Map.Entry<xx,xx>中,Entry是Map集合中的一个接口,但接口是不能创建对象的,它底层是通过使用Entry的实现类对象来封装键值对数据的。
【说明】:底层其实还是使用的键值对的方式。
【Map集合的应用场景】:需要存储一一对应的数据是,可以考虑使用Map集合来做。
04 HashMap
【说明】:计算位置时会根据键的哈希值来算的。
05 LinkedHashMap
06 TreeMap
07 集合的嵌套
08 Stream
08_01 简介
【1】概念:Stream也叫Stream流,是JDK8开始新增的一套API,可用于操作集合或数组的数据。
【2】优势:Stream流大量的结合了Lambda的语法风格来编程,提供了一种更加强大,更加简单的方式操作集合或数组中的数据,使得代码更简洁,可读性更好。
【3】Stream流的使用步骤:
① 根据数据源(集合,数组)获取Stream流对象,相当于获取一条流水线。
② 根据Stream流提供的中间方法,对流水线中的数据进行处理,例如:过滤,排序,去重 ...
(中间方法支持链式编程)
③ 对结果数据进行处理,例如:遍历,统计,收集 ...
08_02 获取Stream流
【1】说明:Stream是一个泛型接口,不能直接实例化对象,它需要与数据源进行连接,因此Stream流对象通常需要通过数据源来获取Stream流对象。
【2】Collection集合数据源获取Stream流:集合变量名.stream(),注意此法只有Collection系列接口才能使用!
Map集合数据源获取Stream流:
① 使用keySet方法/values方法分别获取存放键的Set集合/存放值的Collection集合,然后使用stream方法分别得到键的流/值的流
② Map集合的对象调用entrySet方法,得到存放键值对的Set集合,然后使用stream方法得到Stream流对象。
【3】数组数据源获取Stream流:
① 通过Arrays工具类获取:Arrays.stream()
② Stream流自己有一个静态方法:Stream.of(T...values),of方法的参数是可变参数。
08_03 Stream流常见的中间方法
【1】解释:中间方法指的是调用完成后会返回新的Stream流,可以继续支持链式编程。
① filter筛选的意思,"总裁非要她筛选干净再喝"
② 如果Stream流中的数据是自定义类型的,那么在排序时需要指定根据什么排序
③ distinct有区别的,明显的,"第四听课肯定明显/有区别的与前三名听课效率不一样"
如果Stream流中的数据是自定义类型的,对自定义类型的对象进行去重,要重写hashCode和equals方法
④ map方法用于重置流中的数据,例如把Stream流中的数据替换成对象中的某个成员。
⑤ concat方法是Stream流的静态方法,可以合并两个流,注意!不是合并两个集合/数组。
<>中如果合并的两个流中的数据是不同类型的,就写成Object
08_04 Stream流常见的终结方法
① count方法的返回值要用long类型的变量进行接收。
② max,min方法可以求最大值,最小值,但是前提你得为它指定根据什么比较,
max,min这两个方法返回的类型是Optional所以我们一般在使用完max,min方法后还会再调用一个get方法,
get方法返回的才是流中的对象
【1】如何收集Stream流处理后的数据: