Optional类
引入
NPE
问题就是在开发中经常碰到的NullPointerException
,即空指针问题,Optional
类就是用来优雅解决该问题的方案。
比如大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法。我们首先要判断这个返回值是否为null
,只有在非空的前提下才能将其作为其他方法的参数。
About 12 min
NPE
问题就是在开发中经常碰到的NullPointerException
,即空指针问题,Optional
类就是用来优雅解决该问题的方案。
比如大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法。我们首先要判断这个返回值是否为null
,只有在非空的前提下才能将其作为其他方法的参数。
Java泛型这个特性是从JDK 1.5才开始加入的,因此为了兼容之前的版本,Java泛型的实现采取了“伪泛型”的策略,即Java在语法上支持泛型,但是在编译阶段会进行所谓的“类型擦除”(Type Erasure),将所有的泛型表示(尖括号中的内容)都替换为具体的类型(其对应的原生态类型),就像完全没有泛型一样。
ArrayList
实现了List
接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null
元素,底层通过数组实现。除该类未实现同步外,其余跟Vector
大致相同。每个ArrayList
都有一个容量(capacity)
,表示底层数组的实际大小,容器内存储元素的个数不能多于当前容量。当向容器中添加元素时,如果容量不足,容器会自动增大底层数组的大小。前面已经提过,Java
泛型只是编译器提供的语法糖,所以这里的数组是一个Object
数组,以便能够容纳任何类型的对象。
Java
对象的对象。Java Collections Framework(JCF)
为Java
开发者提供了通用的容器,其始于JDK 1.2
。Java
容器里只能放对象,对于基本类型(int
, long
, float
, double
等),需要将其包装成对象类型后(Integer
, Long
, Float
, Double
等)才能放到容器里。很多时候拆包装和解包装能够自动完成。这虽然会导致额外的性能和空间开销,但简化了设计和编程。Collection
和 Map
两种,Collection
存储着对象的集合,而 Map
存储着键值对(两个对象)的映射表。