我有一组对象,每个对象都有一个 id 值 (int)。 我想编写一个函数,它将对象集作为输入,计算每个对象的分数( double ),并返回对象 id 的排序数组,其中返回的 id 按获得的“分数”的顺序存储。
我认为这很容易,但我找不到用不到 10 行代码实现此目的的简单方法。 (我使用的是jdk 7)
这是我的代码:
private ArrayList<Integer> getBlockIds(IndexKey key) {
ArrayList<Integer> blockIds;
Set<IndexKey> adjKeys = indexAPI.getAdjacentKeys(key, 1);
Comparator cmp = new Comparator("Levenshtein");
for ( IndexKey aKey : adjKeys ) {
if ( cmp.similarity(key.getValue(), aKey.getValue()) >= 0.75 ) {
blockIds.add(aKey.getBlockId);
}
}
return blockIds;
}
我希望 blockId 按分数顺序存储(最高的在前)
最佳答案
实际上你只需要一行。
给定:
Set<MyClass> set;
以及方法int getId()
和int getScore()
:
List<MyClass> sorted = set.stream().sort((a, b) -> a.getScore() - b.getScore()).map(MyClass::getId).collect(Collectors.toList());
关于Java:按分数对 ID 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29073590/