HashSet และ ArrayList เป็นคลาสที่สำคัญที่สุดบางคลาสของเฟรมเวิร์ก Java Collection
ต่อไปนี้เป็นข้อแตกต่างที่สำคัญระหว่าง ArrayList และ HashSet
ซีเนียร์ เลขที่ | คีย์ | ArrayList | HashSet |
---|---|---|---|
1 | การนำไปใช้ | ArrayList คือการใช้งานอินเทอร์เฟซรายการ | ในทางกลับกัน HashSet เป็นการนำ set interface ไปใช้งาน |
2 | การใช้งานภายใน | ArrayList ใช้อาร์เรย์ภายในสำหรับการนำไปใช้ | HashSet ภายในใช้ Hashmap สำหรับการนำไปใช้ |
3 | ลำดับขององค์ประกอบ | ArrayList รักษาลำดับการแทรก เช่น ลำดับของวัตถุที่แทรก | HashSet เป็นคอลเล็กชันที่ไม่มีลำดับและไม่มีการรักษาลำดับใดๆ |
4 | ซ้ำกัน | ArrayList อนุญาตค่าที่ซ้ำกันในคอลเล็กชัน | ไม่อนุญาตให้ใช้องค์ประกอบที่ซ้ำกันใน Hashset |
5 | ประสิทธิภาพของดัชนี | ArrayList ใช้ดัชนีสำหรับประสิทธิภาพ เช่น ดัชนีที่ใช้สามารถดึงวัตถุได้โดยการเรียก get(index) หรือลบวัตถุด้วยการเรียก remove(index) | HashSet อิงตามอ็อบเจ็กต์อย่างสมบูรณ์ และไม่มีเมธอด get() |
6 | Null อนุญาต | สามารถแทรกค่า Null จำนวนเท่าใดก็ได้ในรายการอาร์เรย์โดยไม่มีข้อจำกัด | ในทางกลับกัน Hashset อนุญาตให้มีค่า Null เพียงค่าเดียวในคอลเล็กชัน หลังจากนั้นจะไม่อนุญาตให้เพิ่มค่า Null |
ตัวอย่าง ArrayList เทียบกับ Hashset
JavaTester.java
import java.io.*; import java.util.*; public class JavaTester { public static void main(String[] args) throws IOException{ int n = 5; List<Integer> al = new ArrayList<>(n); for (int i = 1; i <= n; i++) { al.add(i); } System.out.println(al); al.remove(3); System.out.println(al); for (int i = 0; i < al.size(); i++) { System.out.print(al.get(i) + " "); } } }
ผลลัพธ์
[1, 2, 3, 4, 5] [1, 2, 3, 5] 1 2 3 5
ตัวอย่าง
JavaTester.java
import java.util.HashSet; import java.util.Set; public class JavaTester { public static void main(String[] args){ Set<Integer> hs = new HashSet<>(); hs.add(1); hs.add(2); hs.add(3); hs.add(4); hs.add(4); for (Integer temp : hs) { System.out.print(temp + " "); } } }
ผลลัพธ์
1 2 3 4