最近對這兩個問題比較懵逼,關于List和ArrayList、List<String> list = new ArrayList<String>();
?
好了,先搞明白List 和 ArrayList吧。
List是一個接口,是Collection接口的一個子接口,是一個有序的集合。
ArrayList是List的一個實現類,可以實現數組大小的可變,可以很方便的進行增加和刪減數組內元素的操作。
1 List<NameValuePair> paraList = new ArrayList<>(); 2 paraXmlList("cfgXml", dataxmlPath, paraList); 3 paraList.add(new BasicNameValuePair("productid", productid));//(此處對List進行添加了數據)
List list=new ArrayList();這種形式成為向上轉型,ArrayList實現了List接口,可以看成是從List繼承而來,一個子類的對象可以指向它父類。
比如,狗從動物繼承而來,狗是一只動物,所以狗的對象可以當作一只普通的動物來看待。
?
然后再來說說List<String> list=new ArrayList<String>();為甚麼要聲明為List 而不是ArrayList<String>?
List是集合最大的父類,它包含了ArrayList。
如果直接聲明為ArrayList<String> list=new ArrayList<String>()這個也沒有問題,但是不推薦,應為這樣顯得不是很靈活,因為List下除了ArrayList還有LinkList等他們都實現了List里面的方法。
而聲明成:List<String> list=new ArrayList<String>();這樣的形式使得list這個對象可以有多種的存在形式
比如要用鏈表存數據的話直接用LinkedList,使用ArrayList或者Vector直接通過list = new LinkedList<String>();就可以了,這樣讓list這個對象活起來了
很多需求只能用一個list,內存有限,或者線程同步,不能有更多的集合對象,使得List總的接口來管理對象。