一系列独特的元素?

2022-09-03 04:30:20

给定一个像下面这样的数组,我想知道是否有一种简单的方法可以将此数组转换为仅具有唯一值的数组?

这是给定的:

   numbers={5,5,4,3,1,4,5,4,5} 

将其转换为如下所示的结果数组,保留原始顺序:

   {5,1,2,3,4} 

答案 1

在 Java 8 中,用于获取数组的唯一元素IntStream

int[] noDuplicates = IntStream.of(array).distinct().toArray();

最简单的方法是从数组创建 set。

Integer[] array = ...
Set<Integer> set = new LinkedHashSet<Integer>(Arrays.asList(array ));

然后您可以使用以下命令检索数组:

set.toArray()

如果要维护顺序,请使用LinkedHashSet;如果要对其进行排序,请使用TreeSet


答案 2

两个选项

  1. 保留计数和元素的映射,最后仅使用计数为 1 的元素。(需要额外的存储空间,但速度更快)

  2. 对数组进行排序,并在数组中移动时仅使用不重复的数组。

不需要额外的空间,但将是O(n lg(n))