<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                  前面談到了[Guava](http://www.iteblog.com/archives/tag/guava "查看 Guava 中的全部文章")中新引入的Range類,也了解了其中的作用,那么今天來談談[Guava](http://www.iteblog.com/archives/tag/guava "查看 Guava 中的全部文章")中用到Range來的地方:[RangeSet](http://www.iteblog.com/archives/tag/rangeset "查看 RangeSet 中的全部文章")類。[RangeSet](http://www.iteblog.com/archives/tag/rangeset "查看 RangeSet 中的全部文章")類是用來存儲一些不為空的也不相交的范圍的數據結構。假如需要向[RangeSet](http://www.iteblog.com/archives/tag/rangeset "查看 RangeSet 中的全部文章")的對象中加入一個新的范圍,那么任何相交的部分都會被合并起來,所有的空范圍都會被忽略。   講了這么多,我們該怎么樣利用RangeSet?RangeSet類是一個接口,需要用它的子類來聲明一個RangeSet型的對象,實現了RangeSet接口的類有ImmutableRangeSet和TreeRangeSet,ImmutableRangeSet是一個不可修改的RangeSet,而TreeRangeSet是利用樹的形式來實現。下面主要談TreeRangeSet的用法: ~~~ import com.google.common.collect.*; /** * User: 過往記憶 * Email:wyphao.2007@163.com * Blog: http://www.iteblog.com * Date: 13-7-17 * Time: 下午4:10 */ public void testRangeSet(){ RangeSet rangeSet = TreeRangeSet.create(); rangeSet.add(Range.closed(1, 10)); System.out.println(rangeSet); rangeSet.add(Range.closedOpen(11, 15)); System.out.println(rangeSet); rangeSet.add(Range.open(15, 20)); System.out.println(rangeSet); rangeSet.add(Range.openClosed(0, 0)); System.out.println(rangeSet); rangeSet.remove(Range.open(5, 10)); System.out.println(rangeSet); } ~~~ 上面函數的運行結果如下所示: ~~~ {[1‥10]} {[1‥10][11‥15)} {[1‥10][11‥15)(15‥20)} {[1‥10][11‥15)(15‥20)} {[1‥5][10‥10][11‥15)(15‥20)} ~~~ 對Range類的方法不熟悉,請閱讀《[Guava學習之Range](http://www.iteblog.com/archives/531 "Guava學習之Range")》。 > 注意:RangeSet需要充分利用JDK 1.6中NavigableMap特性,所以JDK1.6以下版本無法使用。 那如果我們需要遍歷rangeSet中的所有元素可以用下面方法實現 ~~~ public void iteratorRangeSet(RangeSet integerRangeSet) { if(integerRangeSet == null){ return; } Set<Range> ranges = integerRangeSet.asRanges(); Iterator<Range> iterator = ranges.iterator(); while(iterator.hasNext()){ Range next = iterator.next(); System.out.println(next); } } ~~~ 運行結果: ~~~ [1‥5] [10‥10] [11‥15) (15‥20) ~~~ 如果我們需要得到rangeSet互補的范圍,我們可以用RangeSet提供的complement()方法,rangeSet.complement()同樣是一個RangeSet,其中的元素也是互不相交、且不為空的RangeSet,那么rangeSet的互補集可以像下面這樣來寫: ~~~ RangeSet complement = rangeSet.complement(); System.out.println(complement); ~~~ 得到的結果是: ~~~ {(-∞‥1)(5‥10)(10‥11)[15‥15][20‥+∞)} ~~~ 正好是rangeSet的互補。 如果需要在rangeSet中查詢某個元素是否在rangeSet中,可以用contains(C)來實現,其中C extends java.lang.Comparable。比如我想得到上述rangeSet是否包含15,可以這樣寫: ~~~ boolean isIn = rangeSet.contains(15); System.out.println(isIn);//false,因為上述范圍不包含元素15. ~~~ 如果想知道某個元素是在rangeSet中哪個范圍里面,可以這樣寫: ~~~ Range integerRange = rangeSet.rangeContaining(17); System.out.println(integerRange); //輸出(15‥20),因為17被包含在(15‥20)中,所以輸出這個范圍。 ~~~ 如果想知道某個范圍是否包含在rangeSet的范圍中,可以這樣寫: ~~~ boolean encloses = rangeSet.encloses(Range.closedOpen(18, 20)); System.out.println(encloses);//true.因為范圍(18,20)包含在范圍(15,20)中 encloses = rangeSet.encloses(Range.closedOpen(5, 20)); System.out.println(encloses);//false.因為范圍(5,20)不被rangeSet中任何范圍包含. ~~~ (完) 轉載請注明: 轉載自[過往記憶(http://www.iteblog.com/)](http://www.iteblog.com/) 本文鏈接地址:?[Guava學習之RangeSet(http://www.iteblog.com/archives/538)](http://www.iteblog.com/archives/538)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看