以下是 ArrayList 和 HashSet 之間的一些差異。
- Inheritance:
- Implementation:執行:ArrayList實現 List 接口,同時HashSet實現 Set 接口 Java .
- 內部實現:ArrayList 由數組支持,而 HashSet 由 HashMap 支持。
- Duplicates :ArrayList 允許重複值,而 HashSet 不允許重複值。
- Constructor :ArrayList 有 3 個構造函數,分別是 ArrayList()、ArrayList(intcapacity) ArrayList(int Collection c) 而 HashSet 有 4 個構造函數,分別是 HashSet()、HashSet(intcapacity)、HashSet(Collection c) 和 HashSet(整數容量,浮點負載係數)
- Ordering :ArrayList 保持插入對象的順序,而 HashSet 是無序集合,不保持任何順序。
- Indexing :ArrayList 是基於索引的,我們可以通過調用 get(index) 方法檢索對象或通過調用 remove(index) 方法刪除對象,而 HashSet 完全基於對象。 HashSet也不提供HashMap get().
- 空對象:ArrayList 不施加任何限製,我們可以添加任意數量的空值,而HashSet 允許一個空值。
9.基本操作的時間複雜度:-
9.1 ArrayList普通操作的時間複雜度
add() - 需要O(1)時間;
get() - 需要恒定時間O(1);
remove() - 需要線性時間複雜度 O(n) 。它迭代整個數組以查找符合刪除條件的元素。
contains() - 它也需要線性時間複雜度 O(n)。
9.2 設置常用操作的時間複雜度
對於 HashSet,由於內部 HashMap 實現,add()、remove() 和 contains() 操作花費恒定的 O(1) 時間。
- 用法: 數組列表:-
ArrayList列表=新ArrayList();
- 哈希集:-
HashSet設置=新HashSet();
ArrayList 示例
JAVA
// Java program to demonstrate working of ArrayList in Java
import java.io.*;
import java.util.*;
class ArrayListTest {
public static void main(String[] args)
throws IOException
{
// size of ArrayList
int n = 5;
// declaring ArrayList with initial size n
List<Integer> al = new ArrayList<>(n);
// Appending the new element at the end of the list
for (int i = 1; i <= n; i++) {
al.add(i);
}
// Printing elements
System.out.println(al);
// Remove element at index 3
al.remove(3);
// Displaying ArrayList after deletion
System.out.println(al);
// Printing elements one by one
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
HashSet 示例
JAVA
// Java program to demonstrate working of HashSet
import java.util.HashSet;
import java.util.Set;
class HashSetDemo {
public static void main(String[] args)
{
// Create a HashSet
Set<Integer> hs = new HashSet<>();
// add elements to HashSet
hs.add(1);
hs.add(2);
hs.add(3);
hs.add(4);
// Duplicate removed
hs.add(4);
// Displaying HashSet elements
for (Integer temp : hs) {
System.out.print(temp + " ");
}
}
}
輸出:
1 2 3 4
相關用法
- Java ArrayList和HashMap的區別用法及代碼示例
- Java ArrayList add()用法及代碼示例
- Java ArrayList addAll()用法及代碼示例
- Java ArrayList clear()用法及代碼示例
- Java ArrayList clone()用法及代碼示例
- Java ArrayList contains()用法及代碼示例
- Java ArrayList get()用法及代碼示例
- Java ArrayList indexOf()用法及代碼示例
- Java ArrayList removeAll()用法及代碼示例
- Java ArrayList remove()用法及代碼示例
- Java ArrayList size()用法及代碼示例
- Java ArrayList isEmpty()用法及代碼示例
- Java ArrayList subList()用法及代碼示例
- Java ArrayList set()用法及代碼示例
- Java ArrayList sort()用法及代碼示例
- Java ArrayList toArray()用法及代碼示例
- Java ArrayList toString()用法及代碼示例
- Java ArrayList ensureCapacity()用法及代碼示例
- Java ArrayList lastIndexOf()用法及代碼示例
- Java ArrayList retainAll()用法及代碼示例
- Java ArrayList containsAll()用法及代碼示例
- Java ArrayList trimToSize()用法及代碼示例
- Java ArrayList removeRange()用法及代碼示例
- Java ArrayList replaceAll()用法及代碼示例
- Java ArrayList removeIf()用法及代碼示例
注:本文由純淨天空篩選整理自Rajput-Ji大神的英文原創作品 Difference between ArrayList and HashSet in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。