java list e 查找_Java笔记之List<E>和ArrayList<E>

通过JAVA JDK1.6的描述:

java.util

Interface List

All Superinterfaces:

Collection, Iterable

All Known Implementing Classes:

AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector

List是一个接口,而ArrayList就是它得实现类:

java.util

Class ArrayList

java.lang.Object

extended by java.util.AbstractCollection

extended by java.util.AbstractList

extended by java.util.ArrayList

All Implemented Interfaces:

Serializable, Cloneable, Iterable, Collection, List, RandomAccess

Direct Known Subclasses:

AttributeList, RoleList, RoleUnresolvedList

其中代表的是Element(元素)的意思。

List接口是一个有序的集合,里面的元素可以是重复的。用户通过这个接口可以精确的控制集合中每个元素的插入等方法。用户也可以根据元素的索引值来搜索表中的元素。

其常用的方法有:

及(int index,Eelement) 添加单个元素以及指定的索引位置添加元素

及Collection extends E> c)将指定集合中的元素插入到此列表当中

取得索引位置的元素

移除索引位置的元素

E element)修改索引位置中的元素

ArrayList如上所致,是一个实现了List接口的类。除了实现了List接口的方法,ArrayList还提供了一些方法来操作数组的大小等。

比如它独有的一些方法:

这里有个常见的细节:

List lst = new ArrayList();

ArrayList lst = new ArrayList();

这两个声明有什么区别呢?

为什么大多数人都是这样List list = new ArrayList();声明的呢?

这么写的好处是什么呢?

这样编写的代码编译时类型是List,运行时类型是ArrayList,而List接口的实现类不只有ArrayList一个,

用一个List类型的引用这是“面向接口编程”,好处有很多,尽量面向接口编程,这里只说一个这样写的好处:

以后我们会用到很多不是我们写的类,我们叫第三方类库,在类库里面很可能会返回一个这样的列表,

但是他未必会返给你一个ArrayList,没准是人家自己写的一个实现类都说不准,那么我们面向接口编程,

不需要了解是什么实现类,我们都把它们当List接收过来就好了,我们就当成List来用。提高程序的透明性,

让底层的实现对上层使用者封装。

也就是说,因为List是接口。代码依赖于抽象的好处是,代码可以方便替换。例如,代码List list = new ArrayList();下面通过list来操作集合。代码编写后发现集合使用的不准确,应该使用LinkedList,那么只要修改一行代码List list = new LinkedList();就可以,这行以后的代码不需要修改,因为List接口保证了调用的都是接口中的方法,而ArrayList与LinkedList都实现了List接口。而如果当时用ArrayList list = new ArrayList()这种形式的话,那么list访问到的就可能是ArrayList里独有的方法而非List接口中的方法。这样替换成LinkedList的时候就有可能需要修改很多的代码。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值