簡體   English   中英

如何對多維Arraylist“ArrayList進行排序 <String[]> “在Java?

[英]How to sort a multi-dimensional Arraylist “ArrayList<String[]>” in Java?

我編寫了一個代碼,用每個String[]的第一個元素對多維ArrayList ArrayList<String[]>進行排序,2dArray如下所示:

{
 ["Mark", "mark@mail.com"],
 ["Angela", "zzAngela@gmail.com"],
 ["Harry", "abc_harry@hotmail.com"],
 ["Donald","donny@aol.com"]
}

但是當我運行代碼時數組沒有被排序,有人可以解釋我的代碼有什么問題嗎? 謝謝你!

ArrayList<String[]> sorter = new ArrayList<String[]>();
String file_name = "db_email.csv";

// READING FROM CSV FILE & STORING DATA INTO 2dARRAY
try{

    BufferedReader reader = new BufferedReader(new FileReader (file_name));

    String line = reader.readLine(); // read the rest
    String[] row;

    while(line != null){

    String[] result = line.split(","); 
    sorter.add(new String[]{result[0], result[1]});
    line = reader.readLine();
    }

    reader.close(); 
} catch (IOException e){
    System.out.println(e);
}

// MY SORTING ALGORITHM
Collections.sort(sorter, new Comparator<String[]>() { 

    @Override
    public int compare(String[] o1, String[] o2) {
        return o1[0].compareTo(o2[0]);
    }               
});
// EXPECTED RESULT (sorting 2dArray by 1st column):
{
 ["Angela", "zzAngela@gmail.com"],
 ["Donald","donny@aol.com"],
 ["Harry", "abc_harry@hotmail.com"],
 ["Mark", "mark@mail.com"]
}

// ACTUAL RESULT (the array doesn't get sorted):
{
 ["Mark", "mark@mail.com"],
 ["Angela", "zzAngela@gmail.com"],
 ["Harry", "abc_harry@hotmail.com"],
 ["Donald","donny@aol.com"]
}

我終於解決了這個問題,我通過添加像“aaaaa,myname @ mail.com”這樣的行來測試排序算法。 我不知道大寫問題(可能是因為它比較了數值的Unicode值),因此上面的行總是放在最后。 當我用像Peter White,peter @ me.com這樣的普通線進行測試時,它按預期工作。

謝謝大家的幫助和建議!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM