gpt4 book ai didi

java - 在颜色之后对 arraylist 进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:06:06 25 4
gpt4 key购买 nike

我有一个 ArrayListMap<String, object>我想在颜色之后对列表进行排序,以便红色 map 位于 ArrayList 中的顶部,紧随其后的是蓝色贴图,最后是其他颜色。目前我得到 ArrayList按字母顺序排序。如何获取 ArrayList 中的 map 按我的意愿排序?

代码:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class Test {

public static void main(String[] args) {
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();

HashMap<String, Object> map1 = new HashMap<String, Object>();
map1.put("name", "John");
map1.put("color", "black");
map1.put("size", 24);
result.add(map1);

System.out.println(map1);

HashMap<String, Object> map2 = new HashMap<String, Object>();
map2.put("name", "Liam");
map2.put("color", "yellow");
map2.put("size", 44);
result.add(map2);

System.out.println(map2);

HashMap<String, Object> map3 = new HashMap<String, Object>();
map3.put("name", "Noah");
map3.put("color", "Pink");
map3.put("size", 43);
result.add(map3);

System.out.println(map3);

HashMap<String, Object> map4 = new HashMap<String, Object>();
map4.put("name", "Ake");
map4.put("color", "red");
map4.put("size", 22);
result.add(map4);

System.out.println(map4);

HashMap<String, Object> map5 = new HashMap<String, Object>();
map5.put("name", "Alex");
map5.put("color", "blue");
map5.put("size", 34);
result.add(map5);

System.out.println(map5);

HashMap<String, Object> map6 = new HashMap<String, Object>();
map6.put("name", "John");
map6.put("color", "red");
map6.put("size", 24);
result.add(map6);

System.out.println(map6);

HashMap<String, Object> map7 = new HashMap<String, Object>();
map7.put("name", "Adward");
map7.put("color", "blue");
map7.put("size", 33);
result.add(map7);

System.out.println(map7);

HashMap<String, Object> map8 = new HashMap<String, Object>();
map8.put("name", "William");
map8.put("color", "red");
map8.put("size", 22);
result.add(map8);

System.out.println(map8);

HashMap<String, Object> map9 = new HashMap<String, Object>();
map9.put("name", "Michael");
map9.put("color", "blue");
map9.put("size", 34);
result.add(map9);

System.out.println(map9);

HashMap<String, Object> map10 = new HashMap<String, Object>();
map10.put("name", "Sophia");
map10.put("color", "green");
map10.put("size", 43);
result.add(map10);

System.out.println(map10);

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

@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
String color1 = (String) o1.get("color");
String color2 = (String) o2.get("color");
return color1.compareTo(color2);

}

});

}
}

最佳答案

您的 Comparator 从 map 中提取颜色并简单地比较它们,如您所见,这是按字典顺序进行的。解决此类问题的一种方法是为每种颜色分配一个数值:

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

@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
return Integer.compare(getMapScore(o1), getMapScore(o2));
}

private int getMapScore(Map<String, Object> map) {
final String color = ((String) map.get("color")).toLowerCase();
switch (color) {
case "red":
return 0;
case "blue":
return 1;
}
return 2;
}
});

关于java - 在颜色之后对 arraylist 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39549308/

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