Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ความแตกต่างระหว่าง ArrayList และ HashSet ใน Java

HashSet และ ArrayList เป็นคลาสสำคัญของ Java Collection Framework มีความแตกต่างสำคัญดังนี้:

ลำดับ หัวข้อ ArrayList HashSet
1 การนำไปใช้ (Implementation) นำอินเตอร์เฟซ List ไปใช้ นำอินเตอร์เฟซ Set ไปใช้
2 โครงสร้างภายใน ใช้ Array ภายใน ใช้ HashMap ภายใน
3 ลำดับสมาชิก รักษาลำดับการแทรก (Insertion order) ไม่มีลำดับ (Unordered)
4 ค่าซ้ำ อนุญาตให้มีค่าซ้ำ ไม่อนุญาตค่าซ้ำ
5 ประสิทธิภาพดัชนี ใช้ดัชนี (index-based) get(index), remove(index) อิงตามอ็อบเจกต์ ไม่มี get()
6 ค่า Null ใส่ null ได้ไม่จำกัด ใส่ null ได้เพียง 1 ค่า

ตัวอย่าง ArrayList

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);        // [1, 2, 3, 4, 5]
        al.remove(3);                  // ลบดัชนี 3 (ค่า 4)
        System.out.println(al);        // [1, 2, 3, 5]
        for (int i = 0; i < al.size(); i++) {
            System.out.print(al.get(i) + " "); // 1 2 3 5
        }
    }
}

ตัวอย่าง HashSet

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 (ลำดับไม่แน่นอน)
        }
    }
}

สรุป: ใช้ ArrayList เมื่อต้องการลำดับและเข้าถึงดัชนี ใช้ HashSet เมื่อต้องการความเป็นเอกลักษณ์และค้นหาเร็ว