![](/img/trans.png)
[英]sort ArrayList<HashMap<String, String>> using value
[英]Sort a ArrayList<String> by number value
我有一個視頻分辨率的ArrayList,如下所示:
“1024x768”,“800x600”,“1280x1024”等
我想根據字符串的第一部分中的數值對其進行排序。 即,上面的內容將如下所示:
“800×600”,“1024×768”,“1280×1024”
有沒有一種快速而骯臟的方法來做到這一點,我的意思是不到2-3行代碼? 如果沒有,那么正確的方法是什么? 我得到的值來自一個不屬於我自己的對象。 它有一個返回int的getWidth()和getHeight()方法。
如果數組中的對象是具有getWidth
方法的Resolution
實例,那么您可以使用Comparator
對這些對象進行排序:
Collections.sort(resolutions, new Comparator {
public int compare(Resolution r1, Resolution r2) {
return Integer.valueOf(r1.getWidth()).compareTo(Integer.valueOf(r2.getWidth()));
}
});
正確的方法是編寫一個對字符串進行操作的Comparator實現,除了它解析為第一個非數字字符。 然后它創建一個int並比較int。
然后,您可以將該Comparator的實例與List一起傳遞到Collections.sort()。
使用自定義Comparator通過Collections api對ArrayList進行排序。
Collections.sort(resolutionArrayList, new ResolutionComparator())
使用Comparator會起作用,但如果你有很多值,它會變慢,因為它會多次解析每個String。
另一種方法是將每個值添加到TreeMap中,使用您想要的數字作為鍵,即Integer.valueOf(s.substring(0,s.indexOf('x')))
,然后從中創建一個新的ArrayList。在treeMap.values()
排序的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.