Guava 的 TreeBasedTable
是一个以树形结构组织数据的表格实现。它提供了按行键和列键排序的功能,默认情况下,行键和列键都按照其自然顺序排序。但是,Guava 也提供了一种方式来自定义排序顺序。
要自定义 TreeBasedTable
的排序顺序,您需要在创建实例时提供自定义的 Comparator
。这里有一个例子:
// 自定义行键排序器
Comparator<String> rowComparator = (o1, o2) -> {
// 自定义排序逻辑
return o1.length() - o2.length();
};
// 自定义列键排序器
Comparator<Integer> columnComparator = Comparator.reverseOrder();
// 创建自定义排序的 TreeBasedTable
TreeBasedTable<String, Integer, Double> table = TreeBasedTable.create(
rowComparator,
columnComparator
);
如果您只想自定义 Guava TreeBasedTable
的行键排序,而保留列键的默认自然顺序排序,可以这样做:
// 自定义行键排序器
Comparator<String> rowComparator = (o1, o2) -> {
// 自定义排序逻辑
return o1.length() - o2.length();
};
// 创建自定义排序的 TreeBasedTable,只提供行键排序器
TreeBasedTable<String, Integer, Double> table = TreeBasedTable.create(
rowComparator,
Ordering.natural() // 使用默认的自然顺序排列列键
);
有个注意点,如果columnKey相同,那么数据会被合并。