stusetName?
你debug的結果是沒有問題的,我不太明白你疑惑的知識點在哪,我從以下幾個方面回答這個問題。
一、List集合是不去重的
在解釋上面的原因之前,我們要知道一下兩個知識點
第一個知識點:List集合底層數據結構是一個數組,所以數組的下標可以放任意泛型的數據,包括重復數據。第二個知識點:Set集合底層是用HashMap實現的,它每一個元素都不能重復。例如:
1)List<String>list = new ArrayList();
list.add("a");
list.add("a");
list.add("a");
向這種如果迭代輸出,會輸出3次,a.list的長度也是3.
2)Set<String>set = new HashSet();
set.add("a");
set.add("a");
set.add("a");
像這種Set添加重復元素,會進行覆蓋,此時Set集合中只有一個元素。
第一個List:因為對象的創建是在循環外,for的每一次循環,并沒有創建新的對象,只是每一次for循環把同一個對象的屬性值做了修改。所以循環10次,雖然集合的長度為10,但是屬于同一個對象。
第二個List:在循環外創建了一個對象的引用,但是對象的創建都是在每一個for循環創建的,沒循環一次,外面的那個引用就紙箱了一個新的對象,所以循環10次,創建了10個對象。
第三個List:對象的創建在循環里面,和第二個相同,每一次for循環也創建了一個對象,所以循環10次,創建了10個對象。
如果是Set集合,則第一種情況只會輸出一個對象,第二種和第三種情況則會輸出10個對象
上一篇吉他c和弦與g和弦的區別
下一篇學編程先學python