【发布时间】:2018-04-15 11:06:46
【问题描述】:
在一项家庭作业中,有人要求我在现有程序中创建一个名为 noDups() 的方法,该方法可以在不破坏顺序的情况下从先前排序的数组中删除重复项。该问题还指出它必须是具有 O(N) 的算法,并确保没有项目被移动超过一次,无论有多少重复项。
我最初尝试使用嵌套的 for 循环来循环并删除重复项,但发现这是 O(N^2)。我了解到您可以使用 Set 解决此问题。我尝试编写方法来获取 long[](程序使用的数组类型)数组并将其转换为集合,因为集合仅包含唯一值:
public long[] noDups(long[] target) { //Method for removing duplicates
Set<Long> set = new HashSet<Long>();
Collections.addAll(set, target);
return target;
}
我不断收到标题中所述的错误:
"类型中的方法addAll(Collection, T...) 集合不适用于参数 (Set, long[])"
在我的方法看起来像这样但我有一个不同的错误之前:
public void noDups(long[] target){
Set<long> set = new Hashset<long>(Arrays.asList(target));
我初始化 Set 错误吗?谁能告诉我如何摆脱错误或引导我朝着正确的方向将 long [] 转换为 Set。谢谢!
【问题讨论】:
标签: java arrays collections set hashset