Java - 对数组中的数字进行排序并保持字符串数组的顺序

标签 java arrays sorting numbers

Java 问题:我有一个 double 组和一个字符串数组,每个数组的长度均为 26。我想要在遍历 Arrays.sort() 时使用 double 组(我们称之为权重)。函数中,字符串以相同的方式排序。
示例:
之前:
姓名:鲍勃 |重量:3.6
姓名: 史蒂夫 |重量:11.0
姓名: 托马斯 |重量:2.2

之后:
姓名:托马斯 |重量:2.2
姓名: 鲍勃 |重量:3.6
姓名: 史蒂夫 |重量:11.0

我已经考虑这个问题有一段时间了,但我不知道如何去做。

最佳答案

创建一个类(例如 Person )。实现Comparable<Person> 。给它两个字段,nameweight 。填充 Person 的数组,然后调用Arrays.sort 。从 Person 开始,这可能看起来像

class Person implements Comparable<Person> {
    public Person(String name, double weight) {
        this.name = name;
        this.weight = weight;
    }

    private String name;
    private double weight;

    @Override
    public int compareTo(Person o) {
        int r = Double.compare(this.weight, o.weight);
        if (r != 0) {
            return r;
        }
        return this.name.compareTo(o.name);
    }

    @Override
    public String toString() {
        return String.format("Name: %s | Weight: %.1f", name, weight);
    }
}

然后你可以打印它(因为它覆盖 toString() )就像

public static void main(String[] args) {
    Person[] people = { new Person("Bob", 3.6), //
            new Person("Steve", 11.0), new Person("Thomas", 2.2) };
    System.out.println("Before Sorting");
    for (Person p : people) {
        System.out.println(p);
    }
    Arrays.sort(people);
    System.out.println("After Sorting");
    for (Person p : people) {
        System.out.println(p);
    }
}

哪个输出(根据要求)

Before Sorting
Name: Bob | Weight: 3.6
Name: Steve | Weight: 11.0
Name: Thomas | Weight: 2.2
After Sorting
Name: Thomas | Weight: 2.2
Name: Bob | Weight: 3.6
Name: Steve | Weight: 11.0

关于Java - 对数组中的数字进行排序并保持字符串数组的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43314512/

相关文章:

java - spring中的ContextLoad错误

java - Spring Boot - application.yml,从文件中读取值

java - 给定一个字符串数组,单词,返回该数组,并将所有偶数长度的字符串替换为空字符串

arrays - Powershell 数组包含数组

java - 如何在 do while 循环中初始化变量而不传递值直到循环关闭?

JavaScript 数组解构

javascript 将数组的元素转换为数组

javascript - 选择框以更改网址

linux - 排序范围 Linux

Java 排序日期字段