问题就在于List接口有多个实现类,现在你用的是ArrayList,也许哪一天你需要换成其它的实现类,如 LinkedList或者Vector等等,这时你只要改变这一行就行了: List list = new LinkedList(); 其它使用了list地方的代码根 本不需要改动。 假设你开始用ArrayListalist=newArrayList(), 这下你有的改了,特别是如果你使用了Ar...
这行以后的代码不需要修改,因为List接口保证了调用的都是接口中的方法,而ArrayList与LinkedList都实现了List接口。 而如果当时用ArrayList list = new ArrayList()这种形式的话,那么list访问到的就可能是ArrayList里独有的方法而非List接口中的方法。这样替换成LinkedList的时候就有可能需要修改很多的代码。
更好的性能:由于ArrayList底层使用数组实现,它在插入、删除等操作上有着更好的性能表现,尤其是在需要频繁读取元素或随机访问元素的场景下。 综上所述,ArrayList在性能和灵活性上都有优势,因此在实际开发中常常选择ArrayList作为List接口的实现类。
TA贡献3593条经验 获得超0个赞
泛型集合有很多种,List只是其中一种,ArrayList只是一种实现罢了。如果不想强转,可以在生命List的时候使用如下方式:List<Integer> ints = new ArrayList<Integer>();这样声明的list中存放的变量就不是object了,而是integer类型的对象。而楼主所呈现的代码中:List list = new ArrayList();实际上真实...
具体到你这里,并不是把Linklist转换成List,List其实是一种容器的接口,Linklist是实现List接口的一个容器类(三要素之二),既然实现了这个接口,就重写了这个接口定义的所有方法(三要素之三), List<NameChangeListener> listeners = new LinkedList <NameChangeListener>(); 这句就是声明了一个叫...
强制乡下转型 必须先确定可以像下转型才行 简单的例子 Object o = new Object();如果按你上边说的的话 这个o的就可以强制转型成任意一个类型的对象 多有的类都继承Object类嘛 补充里说的当然可以转了 List list3=new ArrayList(list1); 这个时候用到了自动向上转 ...
AbstractList提供 List 接口的骨干实现,从而最大限度地减少了实现由“随机访问”数据存储(如数组)支持...
Arrays.asList和subList的问题固然存在,但在一些场景下,它们依然是非常有用的,尤其是在需要操作固定...