- 使用接口的目的在于如果你决定修改你的实现,所需的只是在创建处修改它!这里ArrayList已经被向上转型为List(注意List是接口interface)。因此,创建一个具体类的对象,将其转型为对应的接口,然后在其余的代码中使用这个接口。但是这种方式并非总能奏效,因为某些类具有额外的功能。例如,LinkedList中具有在List接口中未包含的额外方法,而TreeMap也具有在Map接口中未包含的具体方法。如果需要使用这些方法,就不能将它们向上转型为更通用的接口。
List<Apple> apples = new ArrayList<>();
- Java容器类库中有两种主要的容器类:Collection和Set
Collection在每个槽中只能保存一个元素,具体包括:List(以特定的顺序保存一组元素);Set(元素不能重复);Queue(只允许在容器的一“端”插入对象,并从另一端移除对象)
Map在每个槽内保存了两个对象,即键和与之相关联的值。
- List
List接口在Collection的基础上添加了大量的方法,使得可以在List的中间插入和移除元素。有两种类型的List:
基本的ArrayList:长于随机访问元素,但是在List的中间插入和移除元素时较慢
LinkedList:在List中间进行插入和删除操作的代价较低,但在随机访问方面相对较慢