创建不可变集合:
如果某个数据不能被修改,把它防御性的拷贝到不可变集合中是个很好的实践
当集合对象被不可信的库调用时,不可变形式是安全的
简单理解:不想让别人修改集合中的内容
创建Map的不可变集合:
细节1:键是不能重复的
细节2:Map里面的of方法,参数是有上限的,最多只能传递20个参数,10个键值对
细节3:超过10个用ofEntries方法
Stream流:
结合了Lambda表达式,简化集合,数组的操作
Stream流的使用步骤:
1.先得到一条Stream流,并把数据放上去
2.使用中间方法对流水线上的数据进行操作
3.使用终结方法对流水线上的数据进行操作
Stream流的中间方法:
注意1:中间方法,返回新的Stream流,原来的Stream流只能使用一次,建议使用链式编程
注意2:修改Stream流中的数据,不会影响原来集合或者数组中的数据
Stream流的终结方法:
collect:收集流中的数据,放到集合中
注意点:如果我们要收集到Map集合当中,键不能重复,否则会报错
set用来去重
tomap:参数一表示键的生成规则
参数二表示值的生成规则
参数一:
Function泛型一:表示流中每个数据的类型
泛型二:表示Map集合中键的数据类型
方法apply形参:依次表示流里面的每一个数据
方法体:生成键的代码
返回值:已经生成的键
参数二:
Function泛型一:表示流中每一个数据的类型
泛型二:表示Map集合中值的数据类型
方法apply形参:依次表示流里面的每一个数据
方法体:生成值的代码
返回值:已经生成的值
方法引用:
把已经有的方法拿过来用,当做函数式接口中的抽象方法的方法体
1,引用处必须是函数式接口
2,被引用的方法必须已经存在
3,被引用方法的形参和返回值需要跟抽象方法保持一致
4,被引用方法的功能要满足当前需求
引用静态方法:
格式:类名::静态方法
范例:Integer::parseInt
引用成员方法:
格式:对象::成员方法
1,其他类:其他类对象::方法名
2,本类:this::方法名
3,父类:super::方法名