Collection与List

集合接口

import java.util.Iterator;


public interface Collection <AnyType> extends Iterable<AnyType>{
	int size ();
	boolean isEmpty();
	void clear ();
	boolean contains(AnyType x );
	boolean add (AnyType x) ;
	boolean remove(AnyType x) ;
	Iterator<AnyType> iterable() ;
}

  实现 Iterable的接口要提供一个iterator 的方法。

public interface Iterator<AnyType> {
	boolean hasNext ();
	AnyType next ();
	void remove();
}

  如果集合正在进行改变的时候,iterator的使用就不再合法。因此只有在要立即使用迭代器的时候才用,当然如果是

用的迭代器自己的remove,是没有问题的。对JAVA集合进行遍历删除时务必要用迭代器.

上面最好参考 :http://www.importnew.com/11038.html

原因分析见:http://guojuanjun.blog.51cto.com/277646/1348450/

相比于Collection的remove方法,collection的remove要先找出被删除的项才行,因此成本

可能 更高。

 

List接口子集

 

public interface List<AnyType> extends Collection<AnyType> {
	AnyType get(int index) ;
	AnyType set(int index, AnyType newVal) ;
	void remove (int index );
	
	ListIterator< AnyType>  listIterator( int pos);
}

List的两种实现 

1.ArrayList

可增长数组的实现。

优点 :get/set 常数时间。

缺点:inset/delete 代价比较大,除非是在末端进行的。

2. LinkedList 

双链表实现。

优点 :insert/delete开销常数时间,这里是假设变动项的位置已知。

缺点:不容易做索引 ,get开销大,除非非常接近表的端点。

 

posted @ 2015-04-23 11:33  chuiyuan  阅读(509)  评论(0编辑  收藏  举报