我有一个包含值的数组:
[1,2,2,8,8,10,10,10,11,]
我想要这样的数组:
[1,2,8,10,11]
如何删除所有条目以便只保留唯一值?
答案 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