Scr*_*kie 7 java list unique duplicates
例如我的列表包含{4,6,6,7,7,8},我想要最终结果= {6,6,7,7}
一种方法是遍历列表并消除唯一值(在这种情况下为4,8).
有没有其他有效的方式而不是循环列表?我问过这个问题,因为我工作的清单非常大?我的代码是
List<Long> duplicate = new ArrayList();
for (int i = 0; i < list.size(); i++) {
Long item = (Long) list.get(i);
if (!duplicate.contains(item)) {
duplicate.add(item);
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止一些好的答案,但另一个选择只是为了它的乐趣.循环遍历列表,尝试将每个数字放入Set,例如HashSet.如果add方法返回false,则表示该数字是重复的,应该进入重复列表.
编辑:像这样的东西应该这样做
Set<Number> unique = new HashSet<>();
List<Number> duplicates = new ArrayList<>();
for( Number n : inputList ) {
if( !unique.add( n ) ) {
duplicates.add( n );
}
}
Run Code Online (Sandbox Code Playgroud)
有没有其他有效的方式而不是循环列表?
你可以聘请一个魔法精灵让它为你做.你怎么会想要这样做而不循环呢?如果不循环遍历列表,您甚至无法查看元素.就像你想在不看这些数字的情况下将一大堆数字相加在一起.求和元素比搜索重复元素或搜索唯一元素容易得多.通常,97%的代码所做的是循环遍历列表和数据并处理和更新它.
所以,说,你必须循环.现在您可能想要选择最有效的方式.一些方法浮现在脑海:
contains循环通过列表当然.))有一个
Map<Integer, Integer> numberToOccurance = new HashMap<Integer, Integer>();
Run Code Online (Sandbox Code Playgroud)
维护计数和数字,最后迭代键集并获取具有多个计数的值
| 归档时间: |
|
| 查看次数: |
34385 次 |
| 最近记录: |