2014-09-03 73 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