定製邏輯我有值... ST1000一個ArrayList,ST 5000,ST 30000,ST400,ST500,SP1000,SP600如何基於Java中
我希望它Ø進行分類排序一樣串的名單ST1000,ST2000,ST3000,ST4000,SP600,SP1000 ..我該怎麼做?
感謝
定製邏輯我有值... ST1000一個ArrayList,ST 5000,ST 30000,ST400,ST500,SP1000,SP600如何基於Java中
我希望它Ø進行分類排序一樣串的名單ST1000,ST2000,ST3000,ST4000,SP600,SP1000 ..我該怎麼做?
感謝
可以使用compareTo
這會比較它爲你按字典
這裏有2種方法使用Java 8
list.stream()
.sorted((s1, s2) -> s1.compareTo(s2)).collect(Collectors.toList());
list.sort((s1, s2)->s1.compareTo(s2));
使用Java 8排序列表,你不」 t必須使用Collections.sort方法
您可以使用Collections.sort(List<T> list, Comparator<? super T> c)
以期望的方式對任何集合進行排序 方法。
您所需要做的就是相應地實現Comparator's
compare
方法。
在您的特定情況下,它會去是這樣的:
List<String> list = Arrays.asList("ST1000", "ST5000", "ST30000", "ST400", "ST500", "SP1000", "SP600");
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String o1Prefix = o1.substring(0, 2);
String o2Prefix = o2.substring(0, 2);
if (o1Prefix.equals(o2Prefix)) {
return Integer.parseInt(o1.substring(2, o1.length())) > Integer.parseInt(o2.substring(2, o2.length())) ? 1 : -1;
} else if (o1Prefix.equals("ST")) {
return -1;
} else {
return 1;
}
}
});
您可以創建一個自定義的比較對象和比較重載方法與所需的邏輯。
Comparator<Model> customComparator = new Comparator<Model>() {
public int compare(Model arg0, Model arg1) {
//TODO custom sort logic
}
};
如果比較返回-1那麼arg0都小於ARG1,0等於1大於
然後進行排序使用自定義比較
Collections.sort(list, customComparator);
哪些值列表?某種物體?你可以發佈你寫的代碼嗎? –
@OlimpiuPOP - 不,它只是字符串值! – AngryJS
我的代碼還沒有任何排序,如果它會是對象,我想使用比較器,但它的只是字符串值:( – AngryJS