我想使用比較器對String類型的ArrayList進行排序。如果ArrayList存儲對象,我只找到了有關如何去做的例子。Java:ArrayList <String>使用比較器進行排序(ArrayLists不存儲對象)
我有一個ArrayList的字符串有10個符號,最後5個符號是數字,形成一個數字。我想按照每個字符串末尾的那些數字的升序來解決一個數組列表。我怎樣才能做到這一點?
謝謝!
我想使用比較器對String類型的ArrayList進行排序。如果ArrayList存儲對象,我只找到了有關如何去做的例子。Java:ArrayList <String>使用比較器進行排序(ArrayLists不存儲對象)
我有一個ArrayList的字符串有10個符號,最後5個符號是數字,形成一個數字。我想按照每個字符串末尾的那些數字的升序來解決一個數組列表。我怎樣才能做到這一點?
謝謝!
這是完成您的任務的一種方式; sorted
接受Comparator
對象。
List<String> result = myArrayList.stream().sorted(Comparator.comparingInt(e -> Integer.parseInt(e.substring(5))))
.collect(Collectors.toList());
或者乾脆:
myArrayList.sort(Comparator.comparingInt(e -> Integer.parseInt(e.substring(5))));
不需要正則表達式。爲什麼不只是e.substring(5)? –
@JBNizet真的,我會用你的想法。 –
Collections.sort可以整理你有比較列表。另外你需要String.substring:
Collections.sort(list, new Comparator<String>(){
@Override
public int compare(String o1, String o2) {
return o1.substring(5).compareTo(o2.substring(5));
}
});
'String' **是一個**對象。你有什麼嘗試(完全)?讓我們看看一些代碼。 –
'private static ArrayList allCodes = new ArrayList (); //添加一些代碼.... private void sortAllCodesNumbers(){ Collections.sort(allCodes,allCodes.getCompByNum()); }'' –
公共靜態比較 getCompByNum() { 比較器COMP =新比較(){ @覆蓋 公衆詮釋比較(allBooks B1,B2 allBooks) { 字符串IDnumbers1 = b1.substring(AUTHOR_ID_LENGHT + GENRE_LENGTH); int number1 = Integer.parseInt(IDnumbers1); String IDnumbers2 = b2.substring(AUTHOR_ID_LENGHT + GENRE_LENGTH); int number2 = Integer.parseInt(IDnumbers1); return number1.compareTo(number2); } }; return comp; }' –