2014-09-03 62 views
4

我们一直在谷歌的番石榴库中使用com.google.common.collect.RangeMap类,并发现它非常有用。具体而言,我想使用asMapOfRanges()方法,并且依赖于返回的Map的迭代顺序在每个条目中的顺序为Rangecom.google.common.collect.ImmutableRangeMap的实现似乎明确地遵守这个实现,但似乎没有在JavaDoc的任何地方提及。我想知道是否可以在任何RangeMap上依赖这种行为,并且它只是在JavaDoc中错过了,或者如果迭代次序是未指定的,在这种情况下,我应该在迭代之前对结果进行排序。谢谢你的帮助。谷歌番石榴RangeMap迭代顺序

回答

2

嗯,我已经看过了实现还我得出了相同的结论,我的意思是这样的代码:

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是没有记录的迹象。他们可能在未来的版本中改变它。如果我想使用它,我会再增加一个额外的单元测试,如果这种情况发生变化,它将作为一个安全网。

+0

做一个单元测试,如果他们回来错误的顺序将失败是一个很好的建议,谢谢。 – 2014-09-03 14:56:26

+0

@AndrewRustleund upvote和/或接受然后;) – Eugene 2014-09-04 05:51:42

+0

我没有足够的声望呢,对不起! :) 我试过了! – 2014-09-04 13:57:40