java arraylist 如何对与字符串混合的 Int 值进行排序
java arraylist how to sort Int value that mixed with string
我的数组列表:
"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",
所以我希望它按货币价值排序
"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",
这是我使用 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);
}
}
输出:
让我知道这是否是您想要的结果。
编辑: 将代码更改为存储在变量中,以备日后操作。
我的数组列表:
"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",
所以我希望它按货币价值排序
"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",
这是我使用 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);
}
}
输出:
让我知道这是否是您想要的结果。
编辑: 将代码更改为存储在变量中,以备日后操作。