Java:按分数对 ID 进行排序

标签 java arrays sorting dictionary

我有一组对象,每个对象都有一个 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/

相关文章:

java - 如何在glassfish服务器中配置oracle瘦连接池?

Java GUI 不变

c# - $push 操作期间非文档嵌套数组的排序规范

python - 基于多个条件对多维数组进行排序的算法

java - RabbitMQ Client关闭MessageListener无法恢复

Java独立代码块

ios - Swift 在 For 循环中追加数组

arrays - VB.NET,传递数组作为参数的两种方式是否相同?

python - Numpy:随机分割数组

Python递归合并排序不起作用