欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > List<HashMap<String, Object>>排序

List<HashMap<String, Object>>排序

2024/11/30 14:36:47 来源:https://blog.csdn.net/weixin_43735471/article/details/140998861  浏览:    关键词:List<HashMap<String, Object>>排序

如果列表中的元素类型是List<HashMap<String, Object>>,排序时需要考虑到value可能是任意类型的对象。在这种情况下,你可以针对具体的类型进行比较,或者使用Comparable接口来确保对象可以被正确比较。

示例代码
假设我们想要根据value的字符串表示来进行排序,可以使用toString()方法将Object转换为String,然后进行比较。下面是一个示例:

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 SortByValue {public static void main(String[] args) {// 示例数据List<HashMap<String, String>> listOfMaps = new ArrayList<>();HashMap<String, String> map1 = new HashMap<>();map1.put("key1", "value3");map1.put("key2", "value2");listOfMaps.add(map1);HashMap<String, String> map2 = new HashMap<>();map2.put("key3", "value1");map2.put("key4", "value4");listOfMaps.add(map2);HashMap<String, String> map3 = new HashMap<>();map3.put("key5", "value5");map3.put("key6", "value1");listOfMaps.add(map3);// 排序List<HashMap<String, String>> sortedList = sortByValue(listOfMaps);// 输出结果System.out.println(sortedList);}public static List<HashMap<String, String>> sortByValue(List<HashMap<String, String>> listOfMaps) {Collections.sort(listOfMaps, new Comparator<HashMap<String, String>>() {@Overridepublic int compare(HashMap<String, String> o1, HashMap<String, String> o2) {// 获取第一个键的值进行比较Iterator<Map.Entry<String, String>> iterator1 = o1.entrySet().iterator();Map.Entry<String, String> entry1 = iterator1.hasNext() ? iterator1.next() : null;Iterator<Map.Entry<String, String>> iterator2 = o2.entrySet().iterator();Map.Entry<String, String> entry2 = iterator2.hasNext() ? iterator2.next() : null;// 比较两个valueif (entry1 != null && entry2 != null) {return entry1.getValue().compareTo(entry2.getValue());}return 0;}});return listOfMaps;}
}

上面是升序排序,如果想降序排序,写成entry2.getValue().compareTo(entry1.getValue());就行了

如果是jdk1.8及以上,使用流来处理更简洁

public static List<HashMap<String, String>> sortByValue(List<HashMap<String, String>> listOfMaps) {return listOfMaps.stream().sorted(Comparator.comparing(map -> {// 获取第一个键的值进行比较return map.values().iterator().next();})).collect(Collectors.toList());}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com