java - 使用 double Java 对数组进行排序

标签 java arrays sorting comparator

我正在将文本文件读入二维数组。第一列(我正在排序的那一列)几乎都是 double 。大家可能都知道,它排序为 1.1 1.6 25.6 6.4,我该如何解决这个问题?

import java.io.*;
import java.util.*;

public class Sort {

    public static void main(final String[] args) throws FileNotFoundException {
        FileOutputStream out = new FileOutputStream("/Users/evanlivingston/2d.txt");
        PrintStream pout = new PrintStream(out);
        List<String[]> entries = new ArrayList<String[]>();
        Scanner sc = new Scanner(new File("/Users/evanlivingston/dists/0.txt"));
        while (sc.hasNext()) {
            entries.add(new String[] { sc.next(), sc.next()});
        }
        String[][] table = entries.toArray(new String[0][]);

        Arrays.sort(table, new Comparator<String[]>() {
            @Override
            public int compare(String[] s1, String[] s2) {
                String t1 = s1[0];
                String t2 = s2[0];
                return t1.compareTo(t2);               
            }      
        });
        pout.print(java.util.Arrays.deepToString(table));
        pout.close();
    }
}

编辑:
这是我更新的代码。它不会编译。

import java.io.*;
import java.util.*;

public class Sort {
    public static void main(String[] args) throws FileNotFoundException {
        FileOutputStream out = new FileOutputStream("/Users/evanlivingston/2d.txt");
        PrintStream pout = new PrintStream(out);
        List<Coords> coords = new ArrayList<Coords>();
        {
            Scanner sc = new Scanner(new File("/Users/evanlivingston/dists/0.txt"));
            while(sc.hasNextLine()) {
                String[] numstrs = sc.nextLine().split("\\s+");
            }
            String[][] table = coords.toArray(new String[0][]);

            Arrays.sort(table, new Comparator<Double[]>() {
                @Override
                public int compare(Double[] s1, Double[] s2) {
                    double a = Double.parseDouble(s1);
                    double b = Double.parseDouble(s2);
                    compare(a, b);
                }
            });
            pout.print(java.util.Arrays.deepToString(table));
            pout.close();
        }
    }
}

最佳答案

在数组 NOT Strings 中存储 double 值。

因此,当您从文件中读取字符串时,将其转换为 double 。或者使用 Scanner.nextDouble() 方法为您执行此操作。

您不希望每次调用比较器时都转换字符串。

关于java - 使用 double Java 对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5751897/

相关文章:

c++ - 使用 sort 和 qsort 进行 c 风格的字符串排序

java - protoc 命令中 proto_path 的用途是什么

java - 查找泛型数组中的最大元素及其位置,并返回包含两者的数组

java - ArrayList 内部 T[] 数组的实例化

c - 在 C 中填充 char*

Python:如何使冒泡排序的实现更加省时?

ruby-on-rails - 给定有序的 id 列表对对象数组进行排序

java - 使用递归将偶数分解为 2,4,6 的和

Java RMI 部署

java - 根据两个不同属性之一(其中一个或另一个)映射实体