色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

stusetName

劉姿婷2年前16瀏覽0評論

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個對象