2014-10-18 41 views
1

我有一個ArrayList<String[]>在java中排序字符串[]數組列表

示例元素:

test,400000,30 

以使陣列列表包含這種類型的字符串陣列。讓一個數組中的中間值的最後一個值。所以它會是這樣的。

30/400000 = 0.000075 

我需要按這些值(lastvalue/middlevalue)按升序排列數組列表。

我該怎麼做?

+0

[用Java排序字符串數組]可能的副本(http://stackoverflow.com/questions/12986386/sorting-an-array-of-strings-with-java) – 2014-10-18 14:16:04

+1

@justin Skiles。這不是該問題的重複。該問題是關於字符串數組排序和我的一個關於字符串[]數組列表排序。 – woof 2014-10-18 14:18:57

回答

0

您可以編寫自定義Comparator

public class StringArrayComparator implements Comparator<String[]> { 
    @Override 
    public int compare(String[] a, String[] b) { 
     double aVal = Double.valueOf (a[2])/Double.valueOf (a[1]); 
     double bVal = Double.valueOf (b[2])/Double.valueOf (b[1]); 

     return Double.compare(aVal, bVal); 
    } 
} 

然後用Collections.sort使用它:

List<String[]> myList = /* some value */; 
Collections.sort(myList, new StringArrayComparator()); 

注:
此實現假定有效輸入 - 所有的陣列(至少)三個元素長,第二個和第三個元素可以解析爲整數,第二個元素(我們除以)不爲零。

+0

我認爲你的意思是浮點除法。 – 2014-10-18 14:18:40

+0

@ mureinik,Integer.compare找不到錯誤。 :( – woof 2014-10-18 14:20:56

+0

@GáborBakos是的,你是對的 - 改爲使用'雙',感謝您的注意! – Mureinik 2014-10-18 14:22:18