两者都有的方法,用起来效果一样(即,具体实现都是ArrayList),区别在于:声明成前者,就不能使用add(int index, E element) ;addAll(int index, Collection<? extends E> c) 等List中定义了的,而Collection中没有定义的方法了。
JAVA的多态,父类引用指向子类对象。 好处?简单的说: Collection<E> a = new ArrayList<E>();可以把后面的ArrayList变为LinkList或HashSet 而这行代码以下的代码都不需要修改。如果逻辑发生了变化,想要存不重复的对象就换成HashSet,如果你查询比较频繁那就换成LinkedList。而之后的代码都不用变化。 如果是List放前面,那就只能用实现List接口的类。其它的好处多写代码才可以体会。只可意会不可言传总的来说灵活一点就是了。
区别就是,第一个把ArrayList当作Collection来使用,第二个把ArrayList当作List来使用。
好处?简单的说:
Collection<E> a = new ArrayList<E>();可以把后面的ArrayList变为LinkList或HashSet
而这行代码以下的代码都不需要修改。如果逻辑发生了变化,想要存不重复的对象就换成HashSet,如果你查询比较频繁那就换成LinkedList。而之后的代码都不用变化。
如果是List放前面,那就只能用实现List接口的类。其它的好处多写代码才可以体会。只可意会不可言传总的来说灵活一点就是了。