有人可以向我解释下面的代码如何工作?目的是删除数组中的重复值。我了解其中的一部分,但不是完全
import java.util.Arrays;
import java.util.LinkedHashSet;
public class ArrayExample
{
public static void main(String[] args) throws `CloneNotSupportedException`
{
//Array with duplicate elements
Integer[] numbers = new Integer[] {1,2,3,4,5,1,3,5};
//This array has duplicate elements
System.out.println( Arrays.toString(numbers) );
//Create set from array elements
LinkedHashSet<Integer> linkedHashSet = new LinkedHashSet<>( Arrays.asList(numbers) );
//Get back the array without duplicates
Integer[] numbersWithoutDuplicates = linkedHashSet.toArray(new Integer[] {});
//Verify the array content
System.out.println( Arrays.toString(numbersWithoutDuplicates) );
}
}
HashSet
或 LinkedHashSet
是如此实现,以防止重复对象。在这里,您正在为构造函数创建一个传递列表,因此结果集只有不同的元素。它在碰撞上使用hashCode
和equals
。
Set
在Java中试图重新创建数学集,这些集合是无法复制的元素集合。您正在做的是创建一个具有重复项的数组numbers
,然后创建一个LinkedHashSet
(这是一种HashSet
,这是一种Set
)。该集合包含数组的所有元素,并且由于它是一个集合,因此没有重复。然后,您只需将此集合转换为一个可能具有不同顺序且无重复的数组即可。
集合接口是一个无法包含重复元素的集合。 有关更多详细信息,请参见https://docs.oracle.com/javase/javase/tutorial/tutorial/collections/interfaces/set.html。实现示例是标签和linkedhashset
LinkedHashSet
从HashSet
延伸,HashSet
实际使用HashMap
来存储元素。Java中的Map
要求键必须唯一,重复键将覆盖。