我们一直在使用 Google 的 guava 库中的 com.google.common.collect.RangeMap
类,发现它非常有用。特别是,我想使用 asMapOfRanges()
方法并依赖于返回的 Map
的迭代顺序是每个条目中 Range
的顺序。 com.google.common.collect.ImmutableRangeMap
的实现似乎明确地遵守了这个实现,但是在 JavaDoc 中似乎没有任何地方提到它。我想知道我是否可以在任何 RangeMap
上依赖这种行为,而它只是在 JavaDoc 中被遗漏了,或者是否打算未指定迭代顺序,在这种情况下,我应该在迭代之前对结果进行排序。谢谢你的帮助。
最佳答案
好吧,我已经查看了实现,也得出了相同的结论,我的意思是这段代码:
static final Ordering<Range<?>> RANGE_LEX_ORDERING = new Ordering<Range<?>>() {
@Override
public int compare(Range<?> left, Range<?> right) {
return ComparisonChain.start()
.compare(left.lowerBound, right.lowerBound)
.compare(left.upperBound, right.upperBound)
.result();
}
};
是否基于范围排序...
我还认为 @Beta 是为什么没有记录下来的迹象。他们可能会在 future 的版本中更改它。如果我想使用它,我会再进行一个额外的单元测试,如果这种情况发生变化,它就会失败,它将充当一个安全网。
关于java - Google Guava RangeMap 迭代顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25646191/