目录
1、集合与Collection集合接口
重要知识架构:
“泛型”——
泛型,即“参数化类型”。就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。
例如:
GenericClass<T>{}
一些常用的泛型类型变量:
E:元素(Element),多用于java集合框架
K:关键字(Key)
N:数字(Number)
T:类型(Type)
V:值(Value)
2、List集合接口
Collection是一个顶级的接口,我们一般更常用List。
核心知识点:
如何使用List ?
集合->数组:
3、LinkedList分析
注:本章中涉及代码实现部分没有截图,可以回XXT去看~
4、Map接口及其操作
只有继承自Collection的才能称之为集合。
Map它是键值对!不是集合!这一小节算是单独的一小章。
下面这张的概念易混淆:
基本操作示例——
注意下面程序的输出:
5、HashMap
// 看不太懂 此处了解即可
6、Set集合接口
使用案例:
7、Iterator接口
迭代器
8、小结:Java集合框架优点
Java集合框架,是典型的面向接口编程的体现!!
<以上是Java集合框架全部内容,本文的第一部分完结>
9、函数式编程
下面这张概念图的第二句重点理解!
★ 函数的输出仅依赖于函数的本身,而不依赖于函数外部数据的状态,即为函数式编程!!!
理解函数式编程和面向对象编程的区别:
10、Lambda表达式
(参数列表)-> {执行的表达式}
11、集合流 Stream API
API = 接口
补充:Java Enum原理(枚举类型)
public enum Size{ SMALL, MEDIUM, LARGE, EXTRA_LARGE };
实际上,这个声明定义的类型是一个类,它刚好有四个实例,在此尽量不要构造新对象。因此,在比较两个枚举类型的值时,永远不需要调用equals方法,而直接使用"=="就可以了。
更多请参考这个链接。
Stream学习参考:Java 8 Stream
引入:
程序猿应该将精力放在具体的业务逻辑处理上!
(像SQL那样做事)
于是有了 集合流Stream ——
★ 总结:
Stream将集合中的元素进行流水线操作,达到出场销售的结果,并以新的集合来聚合Stream操作的结果(不影响原集合的结构)。
// 中间操作记录在下一小节(12)中
终止操作——
下面是 forEach方法 的用法 !forEach里面是一个函数。
12、Filter&Map&Sorted(中间操作)
= 一条流水线接一条流水线再接一条流水线······
①过滤:
返回指定颜色的苹果:
(新办法)
★ 下图为上图的简写!(基于流的操作链!!)
返回指定颜色 && 大于等于重量的苹果:
下面这个图加了打印语句(一条流):
②映射:
何为映射(map)?
举例说,将苹果重量收集为新集合(从苹果到苹果重量int的映射)。
下图等价于上图(用::更高级)——
注意, ::只能用于执行一个方法。
// 注:灰色的是Java编辑器给的自动提示!这个编译器好棒(IDEA)
③排序:
Comparator类中的comparing()方法。
reversed()方法表示倒序。
13、Collect(聚合)
★ 看这个——
14、RemoveIf(移除)
removeIf()表示符合括号内条件的,被移除!!
// 而集合流的流操作表示符合条件的留下来。
15、函数式接口
☆ 跳转复习——Java集合流_编程题
16、Optional
参考链接:Java 8 Optional
问题引入——
替代方案:
Optional (Java 8 以后)
下图为两种写法,记后一种流操作即可:
17、Optional的Filter&Map
好好看上面代码左边的红色解释!!!!!
(代码在IDEA的样子如下)
前面是容器里有东西的话,执行操作;
下面这个是程序里没有东西时,执行!
★ 获取Computer的usb版本,如果没有则返回UNKNOWN:
orElse()用法:若当前容器不为空,则返回容器中元素;若容器为空,则返回默认值。
☆ 跳转复习——Java_Optional_编程题