解釋JAVA程式碼~
真的是有夠硬的喔~
可以真的跑出甚麼的~
才不會看不下去
程式碼
package collection;
import java.util.HashSet;
public class Set01 {
public static void main(String[] args) {
//java本身定義的數字,字串型態-->已內訂比較模式(值)
HashSet<String> hs = new HashSet<>();
System.out.println(hs.add("JAVA"));
hs.add("C++");
hs.add(null);
hs.add("100");
hs.add("Android");
System.out.println(hs);
System.out.println(hs.remove("100"));
System.out.println(hs);
hs.add("Android");
hs.add("JAVA");
System.out.println(hs);
System.out.println("--------------");
HashSet<Integer> hs2 = new HashSet<>();
hs2.add(100);
hs2.add(56);
hs2.add(70);
hs2.add(100);
hs2.add(70);
hs2.add(60);
System.out.println(hs2);
System.out.println("--------------");
HashSet<Pen> hs3 = new HashSet<>();
hs3.add(new Pen());
hs3.add(new Pen());
hs3.add(new Pen());
hs3.add(new Pen());
System.out.println(hs3);
}
}
//--------------------------
class Pen{
@Override
public String toString() {
return "Pen Object";
}
//不要同時修改hashCode() / equals(Object obj)
@Override
public int hashCode() {
return 10;//不取得記憶體位址,而直接回傳10
}
@Override
public boolean equals(Object obj) {
return true;//不比對記憶體,而直接回傳true-->代表二者相同
}
}
顯示
解釋程式碼
這段Java程式碼主要示範了如何使用 HashSet 這個集合類別,以及一些相關的概念。以下是程式碼的解釋:
首先,建立了一個 HashSet
物件 hs
,用來存放字串(String)型態的元素。
使用 add
方法將幾個元素加入到 hs
中,這些元素包括 "JAVA"、"C++"、null、"100" 和 "Android"。
使用 System.out.println(hs)
輸出 hs
的內容,HashSet 不保證元素的順序,所以輸出的順序可能不同。
使用 remove
方法移除一個元素 "100",並再次輸出 hs
。
接著再次加入 "Android" 和 "JAVA" 兩個元素到 hs
,輸出最終的 hs
。
建立了另一個 HashSet
物件 hs2
,這次用來存放整數(Integer)型態的元素,並加入了幾個整數。
輸出 hs2
的內容。
最後,建立了一個 HashSet
物件 hs3
,用來存放自定義的 Pen
物件。這部分示範了自定義類別如何在 HashSet 中使用。
Pen
類別有覆寫(override)了 toString
、hashCode
和 equals
方法。這些方法的覆寫使得 HashSet 可以正確處理 Pen
物件的比較和哈希碼計算。
總結來說,這段程式碼示範了如何使用 HashSet 存儲不同型態的元素,以及如何自定義類別以適當方式使用 HashSet 集合。HashSet 用來存儲不重複的元素,並且不保證元素的順序。
謝謝收看