【问题标题】:Java - Ordering of numbers in an array and keep that order for an array of strings [duplicate]Java - 数组中数字的排序并保持字符串数组的顺序[重复]
【发布时间】:2017-04-10 03:21:47
【问题描述】:

Java 问题:我有一个双精度数组和一个长度为 26 的字符串数组。我希望在通过 Arrays.sort() 函数时,双精度数组(我们称之为权重)以相同的方式对字符串进行排序。
示例:
之前:
姓名:Bob |重量:3.6
姓名:史蒂夫 |重量:11.0
姓名:托马斯 |重量:2.2

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

我已经考虑了一段时间,但我不知道该怎么做。

【问题讨论】:

    标签: java arrays sorting numbers


    【解决方案1】:

    创建一个类(例如,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
    

    【讨论】:

    • 你能给我一个代码形式的例子吗?
    • @МởṇṏсĺḕMᾶṇ 看看这里:mkyong.com/java/…
    【解决方案2】:

    创建一个包含字符串和双精度的类,然后将它们组成一个数组,并根据双精度对它们进行排序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-07
      • 2015-03-16
      • 2018-05-29
      • 2021-03-16
      • 1970-01-01
      • 2014-10-19
      相关资源
      最近更新 更多