java的ArrayList(1)
阿新 • • 發佈:2019-01-02
問題:
ArrayList<Double> tp = new ArrayList<>();
ArrayList<ArrayList<Double>> tps = new ArrayList<ArrayList<Double>>();
while ((string = bReader.readLine()) != null){
String[] strings = string.split(",");
for(String s:strings){
tp.add(Double.parseDouble(s) ); //1
}
System.out.println("第"+i+"行:");
System.out.println(tp);
System.out.println();
tps.add(tp); //2
tp.clear(); //3
}
上面1,2,3行程式碼中使用了ArrayList類的clear方法,當第3行clear時,變數tps中已經add的tp的值也會被clear掉!並且,下次while迴圈時,tps載入tp兩次,clear之後又被清除掉,依次迴圈,最終tps中都為null值。
解決:
當使用clear()方法也消耗很長的時間時,考慮建立一個新的列表,因為java可以很快的建立一個新的物件;
在列表長度很小的情況下(eg:10或100個元素),可以放心的使用這兩種方法clear或removeAll
關於回收:
如果這個物件沒有被 任何人 引用 它 ,就會被回收