hutool List<Map<Interget,Object>> 取map的某个值进行排序,根据 河源, 深圳, 惠州, 中山, 东莞, 广州, 佛山, 珠海, 无钖, 供方自送 排序
时间: 2023-07-27 10:19:04 浏览: 184
您可以使用 Java 8 中的 Lambda 表达式进行排序,具体代码如下:
```java
List<Map<Integer, Object>> list = new ArrayList<>();
// 假设 list 已经被填充好了
List<String> orderList = Arrays.asList("河源", "深圳", "惠州", "中山", "东莞", "广州", "佛山", "珠海", "无钖", "供方自送");
// 按照指定顺序进行排序
list.sort((map1, map2) -> {
String s1 = (String) map1.get(1);
String s2 = (String) map2.get(1);
int index1 = orderList.indexOf(s1);
int index2 = orderList.indexOf(s2);
return Integer.compare(index1, index2);
});
// 输出排序后的结果
for (Map<Integer, Object> map : list) {
System.out.println(map);
}
```
其中,`orderList` 存储了需要按照顺序进行排序的字符串列表,使用 `indexOf` 方法获取到字符串在列表中的位置,然后使用 `Integer.compare` 方法进行比较。最后,使用 `sort` 方法对列表进行排序即可。
相关问题
hutool List<Map<Interget,Object>> 取map的某个值进行排序
可以使用Java 8的lambda表达式和Stream API来完成该任务。具体步骤如下:
1. 使用`Stream`将`List<Map<Integer, Object>>`转换为`Stream<Map<Integer, Object>>`。
2. 使用`sorted`方法对`Stream`进行排序,可以通过`Comparator.comparing`方法指定排序的字段。
3. 使用`map`方法将`Stream<Map<Integer, Object>>`转换为`Stream<Object>`,并且通过`map.get`方法获取需要排序的字段。
4. 使用`collect`方法将`Stream<Object>`转换为`List<Object>`。
下面是示例代码:
```
List<Map<Integer, Object>> list = new ArrayList<>();
// 假设需要按照key为1的值进行排序
List<Object> sortedList = list.stream()
.sorted(Comparator.comparing(m -> (Integer) m.get(1)))
.map(m -> m.get(1))
.collect(Collectors.toList());
```
其中,`Comparator.comparing`方法的参数是一个lambda表达式,可以返回需要排序的字段。在这个例子中,使用`(Integer) m.get(1)`返回key为1的值进行排序,如果需要按照其他字段进行排序,可以修改lambda表达式的实现。
hutool List<Map<Interget,Object>> 取map的某个值进行排序,自定义排序
如果需要自定义排序,可以使用`Comparator`接口的`compare`方法来实现。具体步骤如下:
1. 自定义一个实现了`Comparator`接口的排序器类,实现`compare`方法。
2. 使用`Collections.sort`方法对`List<Map<Integer, Object>>`进行排序,传入自定义的排序器实例。
下面是示例代码:
```
List<Map<Integer, Object>> list = new ArrayList<>();
// 自定义排序器类
class MyComparator implements Comparator<Map<Integer, Object>> {
@Override
public int compare(Map<Integer, Object> o1, Map<Integer, Object> o2) {
// 假设需要按key为1的值进行排序
Integer value1 = (Integer) o1.get(1);
Integer value2 = (Integer) o2.get(1);
return value1.compareTo(value2);
}
}
// 使用自定义排序器进行排序
Collections.sort(list, new MyComparator());
```
在`MyComparator`类中,实现了`compare`方法,返回value1和value2的比较结果,这里使用了`Integer`的`compareTo`方法进行比较。如果需要按照其他字段进行排序,可以修改`compare`方法的实现。最后,使用`Collections.sort`方法对`List<Map<Integer, Object>>`进行排序,传入`MyComparator`实例即可。
阅读全文