use*_*752 2 java sorting collections
我在列表中有一个整数列表,并希望在我迭代列表并将它们保存在TreeSet中时保留10个最大值.我正在使用此代码:
for(Integer i : list) {
if (treeSet.size() < 10) {
treeSet.add(i);
} else if (i > treeSet.last()) {
treeSet.pollLast();
treeSet.add(i);
}
}
Run Code Online (Sandbox Code Playgroud)
但是在运行此代码之前更改列表中的整数顺序时结果是不同的.我的代码是真的吗?
treeSet 按升序保存其数据(首先是最小的),因此您应该替换第一个元素,而不是最后一个:
for(Integer i : list) {
if (treeSet.size() < 10) {
treeSet.add(i);
} else if (i > treeSet.first()) {
treeSet.pollFirst();
treeSet.add(i);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |