Java中ArrayList和HashSet的区别
以下是 ArrayList 和 HashSet 之间的一些区别。
1、继承
2、执行
实现:ArrayList 实现 List
接口,而 HashSet
在 Java 中实现 Set 接口。
3、内部实现
ArrayList 由 Array
支持,而 HashSet
由 HashMap
支持。
4、重复
ArrayList
允许重复值,而 HashSet
不允许重复值。
5、构造函数
ArrayList 有 ArrayList()
, ArrayList(int capacity)
, ArrayList(int Collection c)
三个构造函数,而 HashSet 有 HashSet()
, HashSet(int capacity)
, HashSet(Collection c)
和 HashSet(int capacity, float loadFactor)
6、顺序
ArrayList 维护插入对象的顺序,而 HashSet 是无序集合,不维护任何顺序。
7、索引
ArrayList 是基于索引的,可以通过调用 get(index)
方法检索对象或通过调用 remove(index)
方法删除对象,而 HashSet
完全基于对象。 HashSet 也不提供 get()
方法。
8、空对象
ArrayList 没有任何限制,可以添加任意数量的空值,而 HashSet
允许一个空值。
ArrayList示例
// 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 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