關於ArrayList

關於ArrayList的trimToSize方法

ArrayList的trimToSize方法

ArrayList所說沒有用的值並不是null,而是ArrayList每次增長會預申請多一點空間,1.5倍+1,而不是兩倍
這樣就會出現當size() = 1000的時候,ArrayList已經申請了1200空間的情況
trimToSize 的作用只是去掉預留元素位置,就是刪除多餘的200,改爲只申請1000,內存緊張的時候會用到.
-----------------------------------------
去處ArraryList中重複的值
方法1:
ArrayList<String> apps = ....
ArrayList<String> tempApps = new ArrayList<String>();
for (int i = 0; i < apps.size(); i++) {
String app = apps.get(i);
if(!tempApps.contains(app)){
tempApps.add(app);
}
}
方法2:
ArrayList<String> apps = ....
for (int i = 0; i < apps.size(); i++) {
String app1 = apps.get(i);
for (int j = i + 1; j < apps.size(); j++) {
String app2 = apps.get(j);
if (app1.compareTo(app2) == 0) {
apps.remove(app2);
j--;
apps.trimToSize();
}
}
}
-----------------------------------------
http://baobaoyangzhou.blog.163.com/blog/static/117831250201122135258723/

java中list和arrayList區別

List是一個接口,而ListArray是一個類。
ListArray繼承並實現了List。
所以List不能被構造,但可以向上面那樣爲List創建一個引用,而ListArray就可以被構造。
List list; //正確 list=null;
List list=new List(); //是錯誤的用法

List list = new ArrayList();這句創建了一個ArrayList的對象後把上溯到了List。此時它是一個List對象了,有些ArrayList有但是List沒有的屬性和方法,它就不能再用了。
而ArrayList list=new ArrayList();創建一對象則保留了ArrayList的所有屬性。

爲什麼要用 List list = new ArrayList() ,而不用 ArrayList alist = new ArrayList()呢?
問題就在於List有多個實現類,現在你用的是ArrayList,也許哪一天你需要換成其它的實現類,如 LinkedList或者Vector等等,這時你只要改變這一行就行了:
List list = new LinkedList(); 其它使用了list地方的代碼根本不需要改動。
假設你開始用 ArrayList alist = new ArrayList(), 這下你有的改了,特別是如果你使用了 ArrayList特有的方法和屬性。

地區用 List arr = new ArrayList();定義;行業用 ArrayListarr = new ArrayList();定義;則說明,行業裏用到了ArrayList的特殊的方法.

另外的例子就是,在類的方法中,如下聲明:
private void doMyAction(List list){}
這樣這個方法能處理所有實現了List接口的類,一定程度上實現了泛型函數.

如果開發的時候覺得ArrayList,HashMap的性能不能滿足你的需要,可以通過實現List,Map(或者Collection)來定製你的自定義類.




轉自http://www.cnblogs.com/sipher/articles/2429812.html



ArrayList 迭代器的實現

public class MyArrayList<AnyType> implements Iterable<AnyType>
{
	private int theSize;
	private AnyType[] theItems;
	
	public java.util.Iterator<AnyType> iterator()
	{
		return new ArrayListiterator();
	}
	
	private class ArrayListIterator implements java.util.Iterator<AnyType>
	{
		private int current=0;
		
		public boolean hasNext()
		{
			return current<size();
		}
		public AnyType next()
		{
		return theItems[current++];
	  }
	  public void remove()
	  {
	  	MyArrayList.this.remove(--current);
	  }
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章