以下是 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。