![](/img/trans.png)
[英]sorting arrylist of arraylist of integers not depends in their length in java
[英]Sorting an ArrayList in Java with Strings and Integers
我在Java中有一個字符串數組列表。 所有字符串的格式均為[Integer] [String]。 例如:
100 Tom Dsa 23 John Asdf
98 Mary Qwerty
我想按整數排序此ArrayList。 正確的輸出為:
23 John Asdf 98 Mary Qwerty 100 Tom Dsa
現在,我正在使用以下代碼:
Collections.sort(obj);
它的問題是將整數解釋為字符串,因此100在2之前排序。
有什么辦法可以正確分類嗎?
一種方法:您可以編寫一個自定義的Comparator
,使用java.util.Scanner
從String掃描int值,然后將它們進行比較:
Collections.sort(obj, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return new Scanner(s1).nextInt() - new Scanner(s2).nextInt();
}
});
編輯:當下面沒有行距時,可以使用Scanner
解析Integer
是安全的:
" 98 Mary Qwerty"
而不是"98 Mary Qwerty"
如果列表中的元素總是像Integer和String一樣由空格分隔,則可以在下面使用
Collections.sort(obj, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return Integer.parseInt(s1.split("\\s+")[0]) - Integer.parseInt(s2.split("\\s+")[0]);
}
});
Map<Integer, String> map = new TreeMap<Integer, String>();
for (String string : obj) {
String key = string.substring(0, string.indexOf(" "));
map.put(Integer.valueOf(key),
string.substring(key.length(), string.length()));
}
obj.clear();
for (Map.Entry<Integer, String> entry : map.entrySet()) {
obj.add(entry.getKey().toString()+entry.getValue());
}
System.out.println(obj);
輸出::
[23 John Asdf,98 Mary Qwerty,100 Tom Dsa]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.