如何从数组中获取独特的物品?

2022-09-03 17:25:41

我是Java初学者,我发现了一些关于这个主题的主题,但没有一个对我有用。我有一个这样的数组:

int[] numbers = {1, 1, 2, 1, 3, 4, 5};

我需要得到这个输出:

1, 2, 3, 4, 5

该数组中的每个项目只需一次。

但是如何获得它?


答案 1

最简单的解决方案,无需编写自己的算法:

Integer[] numbers = {1, 1, 2, 1, 3, 4, 5};
Set<Integer> uniqKeys = new TreeSet<Integer>();
uniqKeys.addAll(Arrays.asList(numbers));
System.out.println("uniqKeys: " + uniqKeys);

设置接口保证值的唯一性。TreeSet 还会对此值进行排序。


答案 2

您可以使用 Set<Integer>并节省大量时间,因为它包含独特的元素。如果不允许使用 Java 集合中的任何类,请对数组进行排序并对唯一元素进行计数。您可以手动对数组进行排序,也可以使用 Arrays#sort

我将发布代码:Set<Integer>

int[] numbers = {1, 1, 2, 1, 3, 4, 5};
Set<Integer> setUniqueNumbers = new LinkedHashSet<Integer>();
for(int x : numbers) {
    setUniqueNumbers.add(x);
}
for(Integer x : setUniqueNumbers) {
    System.out.println(x);
}

请注意,我更喜欢使用LinkedHashSet作为Set实现,因为它保持元素插入方式的顺序。这意味着,如果您的数组是,则输出将是 而不是 。{2 , 1 , 2}2, 11, 2