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

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


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