我的陣列串列:
"LVL:100 MONEY:1489 MANA: 42,1",
"LVL:67 MONEY:389 MANA: 33,5",
"LVL:47 MONEY:4229 MANA: 59,7",
"LVL:120 MONEY:1189 MANA: 94,5",
"LVL:150 MONEY:189 MANA: 19,2",
所以我希望它按 MONEY 的值排序
"LVL:47 MONEY:4229 MANA: 59,7",
"LVL:100 MONEY:1489 MANA: 42,1",
"LVL:120 MONEY:1189 MANA: 94,5",
"LVL:67 MONEY:389 MANA: 33,5",
"LVL:150 MONEY:189 MANA: 19,2",
uj5u.com熱心網友回復:
這是我使用 Streams API 的嘗試。我創建了一個新的 Comparator 給 sorted 方法,以便根據錢在字串中出現的位置對錢進行排序。
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class SortMoney {
public static void main(String[] args) {
List<String> playerstats = Arrays.asList("LVL:100 MONEY:1489 MANA: 42,1",
"LVL:67 MONEY:389 MANA: 33,5",
"LVL:47 MONEY:4229 MANA: 59,7",
"LVL:120 MONEY:1189 MANA: 94,5",
"LVL:150 MONEY:189 MANA: 19,2");
List<String> sortedPlayerStates = playerstats.stream()
.map(data -> data.split(":"))
.sorted((o1, o2) -> {
int a = Integer.parseInt(o1[2].split(" ")[0]);
int b = Integer.parseInt(o2[2].split(" ")[0]);
if (a > b) {
return -1;
} else if (b > a) {
return 1;
} else {
return 0;
}
})
.map(data -> String.join(":", data))
.collect(Collectors.toList());
sortedPlayerStates.forEach(System.out::println);
}
}
輸出:

讓我知道這是否是您想要的結果。
編輯:將代碼更改為存盤在變數中,以防您以后想要操作它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/411325.html
標籤:
上一篇:Python3bisect_left:回傳值與Python檔案描述不匹配
下一篇:為什么我的快速排序功能沒有運行?
