我正在將文本文件讀取到二維數組中。第一列(我正在分類的那一列)幾乎都是雙打。正如你們大概知道的那樣,它可以排序1.1 1.6 25.6 6.4,我該如何解決這個問題?用雙倍數組對Java進行排序
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();
}
}
}
**差不多所有雙打?通過這裏的「Double」,我假設你的意思是「根據慣例,可以將其解釋爲浮點數,我希望根據浮點值進行排序,而不是按字典順序排列」。 – 2011-04-22 05:27:28
@Karl Knecthel,是的,這正是我的意思,我編輯的代碼是我認爲是正確的,但它不會編譯。 – evanlivingston 2011-04-22 05:32:27
這是很好,你正在編輯跟進,但請添加到原來的職位,而不是覆蓋。覆蓋刪除原始答案的上下文,使他們看起來不適合這個問題。 – Pops 2011-04-22 05:40:00