【Java】guava Range类

关于Api之类的就不介绍了,贴一个例子:

        Range<Integer> a1 = Range.closed(0,1);
        System.out.println(a1);
        Range<Integer> a2 = Range.open(0,1);
        System.out.println(a2);
        Range<Integer> a3 = Range.openClosed(0,1);
        System.out.println(a3);
        Range<Integer> a4 = Range.closedOpen(0,1);
        System.out.println(a4);
        Range<Integer> a5 = Range.atLeast(0);
        System.out.println(a5);
        Range<Integer> a6 = Range.greaterThan(0);
        System.out.println(a6);
        Range<Integer> a7 = Range.atMost(0);
        System.out.println(a7);
        Range<Integer> a8 = Range.lessThan(0);
        System.out.println(a8);

输出:

[0‥1]
(0‥1)
(0‥1]
[0‥1)
[0‥+∞)
(0‥+∞)
(-∞‥0]
(-∞‥0)

我们可以使用这个判定是否包含一个元素或者区间之间的操作,如交集,并集等。


这里介绍另外一个有关的应用,RangMap:

        RangeMap<Integer, String> level = TreeRangeMap.create();
        level.put(Range.closed(90,100), "A");
        level.put(Range.closedOpen(80,90), "B");
        level.put(Range.lessThan(80), "C");

        System.out.println(level.get(95));
        System.out.println(level.get(85));
        System.out.println(level.get(75));
我们可以使用Range来作为检索数据的key。
        RangeMap<Integer, String> level = TreeRangeMap.create();
        level.put(Range.closed(90,100), "A");
        level.put(Range.closedOpen(80,90), "B");
        level.put(Range.lessThan(80), "C");

        System.out.println(level.get(95));
        System.out.println(level.get(85));
        System.out.println(level.get(75));

guava中的Range工具类可以方便处理区间相关的问题,尤其适合与规则或者等级有关的业务逻辑,值得使用一哈。

猜你喜欢

转载自blog.csdn.net/u010900754/article/details/80686533
今日推荐