首頁>Club>
1.ListstuList = new ArrayList();Student stu = new Student();for(int i = 0; i
7
回覆列表
  • 1 # 強哥教你學程式設計

    你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個物件

  • 中秋節和大豐收的關聯?
  • 甲米哪裡的海灘比較舒服?