List 接口 继承自Collection接口 .. 元素顺序按照插入顺序与 ...有2中List 。
ArrayList 和LinkedList 他们都是变长数组,只是存储方式不同 。。ArrayList是以数组存储,适合元素的查找 、、
LinkedList是以链表为存储结构 适合高效率的插入删除 。
LinkedList 和ArrayList都实现了 List接口
实现了Iterable接口可以进行迭代for循环操作。。。不能通过迭代for循环的集合删除元素 。。。
我们在使用list的时候经常会需要返回List的一个子列表 。
我们知道在List接口中存在一个 subList方法可以返回 从 0到 List长度的索引之间的
元素的一个子视图 ..这个视图和原列表存在这关系映射.在子视图中增加或删除都会影响到原list ;
看下面一段代码 我们发现 我们先通过删除视图中的所有元素从而 删除list中包含的所有子列表的元素 结果为空。
我们有通过子列表视图添加元素 发现 原列表右增加了元素...使用时候应该注意
import java.util.ArrayList;
import java.util.List ;
class MyObject {
static int i=0 ;
@Override
public String toString() {
// TODO Auto-generated method stub
return this.getClass().getName();
}
}
public class MyArray {
private List<MyObject> l=new ArrayList<MyObject>() ;
public void add(MyObject ...obj ){
for(MyObject tem:obj){
l.add(tem) ;
}
}
public void show(){
System.out.println(this.l );
}
public static void main(String[]args){
MyArray arr=new MyArray() ;
MyObject ss[]={new MyObject(),new MyObject(),new MyObject(),new MyObject()} ;
arr.add(ss) ;
System.out.println("原始数据");
arr.show() ;
List<MyObject> ll=arr.getSub(0,4) ; //返回0-4之间的所有值的列表不包括 索引4
System.out.println("通过子视图删除所有元素");
ll.removeAll(ll); //通过子列表删除所有列表
arr.show() ;
System.out.println("通过子视图添加");
ll.add((MyObject) new MyObject()) ;
ll.add((MyObject) new MyObject()) ;
ll.add((MyObject) new MyObject()) ;
arr.show() ;
}
public List<MyObject> getSub(int i,int j) {
return l.subList(i, j);
}
}