Computer >> Máy Tính >  >> Lập trình >> Java

Sự khác biệt giữa ArrayList và HashSet trong Java

HashSet và ArrayList đều là một số lớp quan trọng nhất của khung Java Collection.

Sau đây là những điểm khác biệt quan trọng giữa ArrayList và HashSet.

Mặt khác,
Sr. Không. Phím ArrayList HashSet
1 Thực hiện ArrayList là phần triển khai của giao diện danh sách. HashSet là việc triển khai một giao diện tập hợp.
2 Triển khai nội bộ ArrayList triển khai nội bộ mảng để triển khai nó. HashSet nội bộ sử dụng Hashmap để triển khai.
3 Thứ tự các phần tử ArrayList duy trì thứ tự chèn, tức là thứ tự của đối tượng mà chúng được chèn vào. HashSet là một tập hợp không có thứ tự và không duy trì bất kỳ thứ tự nào.
4 Bản sao ArrayList cho phép các giá trị trùng lặp trong bộ sưu tập của nó. Mặt khác, các phần tử trùng lặp không được phép trong Hashset.
5 Hiệu suất chỉ mục ArrayList sử dụng chỉ mục cho hiệu suất của nó, tức là dựa trên chỉ mục của nó, người ta có thể truy xuất đối tượng bằng cách gọi get (chỉ mục) hoặc loại bỏ các đối tượng bằng cách gọi remove (index) HashSet hoàn toàn dựa trên đối tượng và nó không cung cấp phương thức get ().
6 Được phép trống Có thể chèn bất kỳ số giá trị null nào vào danh sách mảng mà không có bất kỳ hạn chế nào. Mặt khác, Hashset chỉ cho phép một giá trị null trong bộ sưu tập của nó, sau đó không giá trị null nào được phép thêm vào.

Ví dụ về ArrayList so với 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) + " ");
      }
   }
}

Đầu ra

[1, 2, 3, 4, 5]
[1, 2, 3, 5]
1 2 3 5

Ví dụ

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 + " ");
      }
   }
}

Đầu ra

1 2 3 4