list.sort(Comparator.comparingLong(m -> (long) m.get("timestamp")).reversed());中的get爆红
时间: 2024-05-06 14:15:54 浏览: 180
这是因为 `get` 方法返回的是一个 `Object` 类型,而 `Comparator.comparingLong` 要求传入的参数类型必须为 `long` 或其包装类 `Long`。您需要将 `get` 方法返回的对象强制转换为 `long` 或 `Long` 类型,例如:
```
list.sort(Comparator.comparingLong(m -> ((Long) m.get("timestamp")).longValue()).reversed());
```
或者使用 `Long.valueOf` 方法转换:
```
list.sort(Comparator.comparingLong(m -> Long.valueOf((Integer) m.get("timestamp"))).reversed());
```
请注意,如果 `get("timestamp")` 返回的是一个 `Integer` 类型,则需要先将其转换为 `Long` 类型,再进行排序。
相关问题
list.sort(Comparator.comparingLong(m -> Long.valueOf(m.get("timestamp"))).reversed());中的get报错
这个错误可能是因为您正在尝试对一个类型为 `Map` 的对象调用 `get()` 方法,但是 `Map` 类型的对象并不具有名为 `get()` 的方法。
如果您想要按照 `Map` 中的某个值进行排序,可以使用 `Comparator.comparing()` 方法,并使用 `Map` 中的键来指定要按照哪个值进行排序。例如:
```
list.sort(Comparator.comparing(m -> Long.valueOf(m.get("timestamp"))).reversed());
```
这个例子中,我们使用 `Comparator.comparing()` 方法来指定要按照 `timestamp` 键进行排序。由于 `timestamp` 值是字符串类型的,我们需要将它转换为 `long` 类型,然后调用 `reversed()` 方法以逆序排序列表。
list.sort(Comparator.comparing(m -> Long.valueOf(m.get("timestamp"))).reversed());中的get报错
这个报错可能是因为你使用了一个不支持 get 方法的对象类型。在这个例子中,我们使用了一个 `List<Map<String, String>>` 的对象,其中每个 Map 对象都包含了一个名为 "timestamp" 的 String 类型的键值对。
如果你的代码中报错了,那么可能是因为你没有正确地使用 Map 对象。在这种情况下,你需要先确保你的 Map 对象中确实有一个名为 "timestamp" 的键值对,才能使用 `get("timestamp")` 方法。
你可以尝试修改代码,将其分解为多个语句来调试:
```
// 先获取一个 Map 对象
Map<String, String> map = ...;
// 然后从 Map 中获取 "timestamp" 字段
String timestamp = map.get("timestamp");
// 将字符串类型的 timestamp 转换为 long 类型
long timestampLong = Long.valueOf(timestamp);
// 创建一个 Long 类型的比较器,用于比较 timestampLong 字段
Comparator<Long> comparator = Comparator.reverseOrder();
// 排序 List<Map<String, String>> 对象
list.sort(Comparator.comparing(map -> Long.valueOf(map.get("timestamp"))).reversed());
```
这样,你就可以逐步检查代码,并在出现问题时更容易找到错误。
阅读全文