gpt4 book ai didi

java - 嵌套 Map 的基于时间戳的排序

转载 作者:行者123 更新时间:2023-12-01 11:14:24 25 4
gpt4 key购买 nike

我有一个由 Guava 库的表结构返回的嵌套 Map,其模板化如下:

Map<ComplexID1, Map<ComplexID2, MyObject>>

其中 ComplexID1 是我的行键,ComplexID2 是我的列键,MyObject 保存我的元数据。我的元数据的属性之一是 JODA 时间戳。

我需要按时间顺序(或按时间倒序)对整个结构进行排序以便显示,最新的对象在顶部创建,向后移动。

我无法找到任何信息来对此数据结构进行排序。有人可以指点一下吗?

此外,我尝试让 MyObject 类扩展 Comparable 并覆盖 JODA 日期时间对象上的 compareTo,因为我试图使用 Collections.Sort()。不幸的是,这种方法似乎对我不起作用。

最佳答案

下面的解决方案完美解决了这个问题。代码片段取自那里。将其粘贴到此处以供引用,感谢原始发布者(问题的标题不同,因此找不到它)。

Sorting Guava tables in descending order based on values

Ordering<Table.Cell<String, FlowId, VersionData>> comparator =
new Ordering<Table.Cell<String, FlowId, VersionData>>() {
public int compare(
Table.Cell<String, FlowId, VersionData> cell1,
Table.Cell<String, FlowId, VersionData> cell2) {
return cell1.getValue().compareTo(cell2.getValue());
}
};

ImmutableTable.Builder<String, FlowId, VersionData>
sortedBuilder = ImmutableTable.builder();
for (Table.Cell<String, FlowId, VersionData> cell :
comparator.reverse().sortedCopy(tableBackedVersionStore.cellSet()))
{
sortedBuilder.put(cell);
}
return sortedBuilder.build();

关于java - 嵌套 Map 的基于时间戳的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32000193/

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