import java.io.*;
import java.util.*;
public class Sort {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new FileReader("data1.csv"));
Map<String, String> map=new TreeMap<String, String>();
String line="";
while((line=reader.readLine())!=null){
map.put(getField(line),line);
}
reader.close();
FileWriter writer = new FileWriter("sorted_numbers.txt");
for(String val : map.values()){
writer.write(val);
writer.write('\n');
}
writer.close();
}
private static String getField(String line) {
return line.split(",")[0];//extract value you want to sort on
}
}
Hia的 我想讀一個未排序的文件,並獲取Java排序的CSV數據文件的一列,並在一個新的文件打印這些結果以升序在CSV文件中的一列數據。我在這個網站上搜索時借用了這個解決方案,因爲我認爲這個解決方案非常適合我想要實現的目標。我有一個282行的數據形式爲排序在Java
UserID, Module, Mark
Ab004ui, g46PRo, 54
cb004ui, g46GRo, 94
gy004ui, g46GRo, 12
ab004ui, g46PRo, 34
這是在csv文件中。 當我用上面的代碼只讓我在sorted_marks.txt一條線,像這樣
ab004ui, g46PRo, 34
而且我相信它甚至wasnt排序。
我希望所有來自新文件的結果,以根據自己的用戶ID,沒有別的排序,但我似乎無法得到它的工作,請任何幫助,將不勝感激
要小心,如果你使用地圖,如果你有重複鍵,他們將被覆蓋,你會失去他們。 – 2009-12-12 17:38:01
而不是使用地圖,你建議使用什麼?我剛剛注意到,並非所有數據都在那裏,因爲許多用戶ID都是相同的,所以已被覆蓋。什麼是白癡:(。該死的,我怎麼會糾正這個? – Izzy 2009-12-12 17:57:07
我這樣做了:(也許這不是最好的解決方案)我仍然使用地圖,但是當我把對象放入它時,我檢查是否已經存在該鍵(調用'containsKey(key)')如果它已經在那裏,我在while塊中調用'containsKey(key +「_ 001」)'''containsKey(key +「_ 002」)'...當我不找到這樣一個關鍵字,我稱之爲'put(key +「_ 003」,value)'。而不是「_」,你可以使用空格或者一個你知道它不會在任何用戶標識中的字符。 ,尤其是當你有大量的數據,但至少它的工作原理 – 2009-12-12 18:18:47