Java 问题:我有一个 double 组和一个字符串数组,每个数组的长度均为 26。我想要在遍历 Arrays.sort()
时使用 double 组(我们称之为权重)。函数中,字符串以相同的方式排序。
示例:
之前:
姓名:鲍勃 |重量:3.6
姓名: 史蒂夫 |重量:11.0
姓名: 托马斯 |重量:2.2
之后:
姓名:托马斯 |重量:2.2
姓名: 鲍勃 |重量:3.6
姓名: 史蒂夫 |重量:11.0
我已经考虑这个问题有一段时间了,但我不知道如何去做。
最佳答案
创建一个类(例如 Person
)。实现Comparable<Person>
。给它两个字段,name
和weight
。填充 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/