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)來定制你的自定義類.