gpt4 book ai didi

java - 进一步排序一个已经排序的列表

转载 作者:行者123 更新时间:2023-11-29 03:35:45 24 4
gpt4 key购买 nike

我有一个 maps 列表,我已经按一种类型对其进行了排序,但现在我想进一步对该列表进行排序

原始排序

Collections.sort(list, new Comparator<Map<String,Object>>(){

@Override
public int compare(Map<String, Object> m1,Map<String, Object> m2) {

return m1.get("type").toString().compareTo(m2.get("type").toString()); //type is a 1 or 0
}
});

现在我想做的是保留该顺序,但我想进一步按人员姓氏对该列表进行排序。我是否必须将其拆分为 2 个列表,一个类型为 0 的列表,另一个类型为 1 的列表,然后将这些列表加在一起?

基本上我想复制一个 SQL 排序,我会做 type ASC, lastName ASC 并给我一个按类型排序的列表,其中类型按姓氏排序。

最佳答案

你可以这样做:

int compareType = m1.get("type").toString().compareTo(m2.get("type").toString());
if(compareType != 0) {
return compareType;
}
return m1.get("name").toString().compareTo(m2.get("name").toString());

如果你在很多键上排序,这会更干净:

for(String key : new String[] { "type", "name" }) {
int compare = m1.get(key).toString().compareTo(m2.get(key).toString());
if(compare != 0) {
return compare;
}
}
return 0;

关于java - 进一步排序一个已经排序的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15646900/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com