如何在java中读取列表时保留10个最大整数?

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)

但是在运行此代码之前更改列表中的整数顺序时结果是不同的.我的代码是真的吗?

use*_*125 7

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)