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