如何在我的数组中只保留唯一值?

时间:2013-12-29 00:55:16

标签: java arrays

我有一个包含值的数组:

[1,2,2,8,8,10,10,10,11,]

我想要这样的数组:

[1,2,8,10,11]

如何删除所有条目以便只保留唯一值?

3 个答案:

答案 0 :(得分:3)

您的意思是条目应该是唯一的。

几分钟前我碰巧回答了一个非常相似的问题,所以这是经过调整的代码:

public class Main {
    public static void main(String[] args) {
        Integer[] arr = {1, 2, 2, 8, 8, 10, 10, 10, 11 };
        System.out.println(Arrays.toString(arr));

        Set<Integer> set = new HashSet<>(Arrays.asList(arr));
        arr = new Integer[set.size()];
        arr = set.toArray(arr);

        System.out.println(Arrays.toString(arr));
    }
}

输出

[1, 2, 2, 8, 8, 10, 10, 10, 11]
[1, 2, 8, 10, 11]

再一次:如果您使用非常大的集合,代码可能效率低下,因为它会通过一些集合抛出您的数据。

HashSet会自动删除重复项,因此您只需在该集合中插入值即可。

答案 1 :(得分:1)

如果你想要唯一的值,你不需要数组,你想要一个 Set

Set<Integer> numbers = new LinkedHashSet<Integer>();    

LinkedHashSet的{​​{1}}实现维护迭代顺序与插入相同 顺序。

答案 2 :(得分:0)

它在php中很容易制作,使用函数:array_unique() http://www.php.net/manual/en/function.array-unique.php