পৃষ্ঠাসমূহ

Search Your Article

CS

 

Welcome to GoogleDG – your one-stop destination for free learning resources, guides, and digital tools.

At GoogleDG, we believe that knowledge should be accessible to everyone. Our mission is to provide readers with valuable ebooks, tutorials, and tech-related content that makes learning easier, faster, and more enjoyable.

What We Offer:

  • 📘 Free & Helpful Ebooks – covering education, technology, self-development, and more.

  • 💻 Step-by-Step Tutorials – practical guides on digital tools, apps, and software.

  • 🌐 Tech Updates & Tips – simplified information to keep you informed in the fast-changing digital world.

  • 🎯 Learning Support – resources designed to support students, professionals, and lifelong learners.

    Latest world News 

     

Our Vision

To create a digital knowledge hub where anyone, from beginners to advanced learners, can find trustworthy resources and grow their skills.

Why Choose Us?

✔ Simple explanations of complex topics
✔ 100% free access to resources
✔ Regularly updated content
✔ A community that values knowledge sharing

We are continuously working to expand our content library and provide readers with the most useful and relevant digital learning materials.

📩 If you’d like to connect, share feedback, or suggest topics, feel free to reach us through the Contact page.

Pageviews

Monday, January 16, 2017

Guava - Range Class

Range represents an interval or a sequence. It is used to get a set of numbers/ strings lying in a particular range.

Class Declaration

Following is the declaration for com.google.common.collect.Range<C> class:
@GwtCompatible
public final class Range<C extends Comparable>
   extends Object
      implements Predicate<C>, Serializable

Methods

Sr.No Method & Description
1 static <C extends Comparable<?>> Range<C> all() Returns a range that contains every value of type C.
2 boolean apply(C input)Deprecated. Provided only to satisfy the Predicate interface; use contains(C) instead.
3 static <C extends Comparable<?>> Range<C> atLeast(C endpoint) Returns a range that contains all values greater than or equal to endpoint.
4 static <C extends Comparable<?>> Range<C> atMost(C endpoint) Returns a range that contains all values less than or equal to endpoint.
5 Range<C> canonical(DiscreteDomain<C> domain) Returns the canonical form of this range in the given domain.
6 static <C extends Comparable<?>> Range<C> closed(C lower, C upper) Returns a range that contains all values greater than or equal to lower and less than or equal to upper.
7 static <C extends Comparable<?>> Range<C> closedOpen(C lower, C upper) Returns a range that contains all values greater than or equal to lower and strictly less than upper.
8 boolean contains(C value) Returns true if value is within the bounds of this range.
9 boolean containsAll(Iterable<? extends C> values) Returns true if every element in values is contained in this range.
10 static <C extends Comparable<?>> Range<C> downTo(C endpoint, BoundType boundType) Returns a range from the given endpoint, which may be either inclusive (closed) or exclusive (open), with no upper bound.
11 static <C extends Comparable<?>> Range<C> encloseAll(Iterable<C> values) Returns the minimal range that contains all of the given values.
12 boolean encloses(Range<C> other) Returns true if the bounds of other do not extend outside the bounds of this range.
13 boolean equals(Object object) Returns true if object is a range having the same endpoints and bound types as this range.
14 static <C extends Comparable<?>> Range<C> greaterThan(C endpoint) Returns a range that contains all values strictly greater than endpoint.
15 int hashCode() Returns a hash code for this range.
16 boolean hasLowerBound() Returns true if this range has a lower endpoint.
17 boolean hasUpperBound() Returns true if this range has an upper endpoint.
18 Range<C> intersection(Range<C> connectedRange) Returns the maximal range enclosed by both this range and connectedRange, if such a range exists.
19 boolean isConnected(Range<C> other) Returns true if there exists a (possibly empty) range which is enclosed by both this range and other.
20 boolean isEmpty() Returns true if this range is of the form [v..v) or (v..v].
21 static <C extends Comparable<?>> Range<C> lessThan(C endpoint) Returns a range that contains all values strictly less than endpoint.
22 BoundType lowerBoundType() Returns the type of this range's lower bound: BoundType.CLOSED if the range includes its lower endpoint, BoundType.OPEN if it does not.
23 C lowerEndpoint() Returns the lower endpoint of this range.
24 static <C extends Comparable<?>> Range<C> open(C lower, C upper) Returns a range that contains all values strictly greater than lower and strictly less than upper.
25 static <C extends Comparable<?>> Range<C> openClosed(C lower, C upper) Returns a range that contains all values strictly greater than lower and less than or equal to upper.
26 static <C extends Comparable<?>> Range<C> range(C lower, BoundType lowerType, C upper, BoundType upperType) Returns a range that contains any value from lower to upper, where each endpoint may be either inclusive (closed) or exclusive (open).
27 static <C extends Comparable<?>> Range<C> singleton(C value) Returns a range that contains only the given value.
28 Range<C> span(Range<C> other) Returns the minimal range that encloses both this range and other.
29 String toString() Returns a string representation of this range, such as "[3..5)" (other examples are listed in the class documentation).
30 BoundType upperBoundType() Returns the type of this range's upper bound: BoundType.CLOSED if the range includes its upper endpoint, BoundType.OPEN if it does not.
31 C upperEndpoint() Returns the upper endpoint of this range.
32 static <C extends Comparable<?>> Range<C> upTo(C endpoint, BoundType boundType) Returns a range with no lower bound up to the given endpoint, which may be either inclusive (closed) or exclusive (open).

Methods Inherited

This class inherits methods from the following class:
  • java.lang.Object

Example of Range class

Create the following java program using any editor of your choice in say C:/> Guava.
GuavaTester.java
import com.google.common.collect.ContiguousSet;
import com.google.common.collect.DiscreteDomain;
import com.google.common.collect.Range;
import com.google.common.primitives.Ints;

public class GuavaTester {

   public static void main(String args[]) {
      GuavaTester tester = new GuavaTester();
      tester.testRange();
   }

   private void testRange() {

      //create a range [a,b] = { x | a <= x <= b}
      Range<Integer> range1 = Range.closed(0, 9); 
      System.out.print("[0,9] : ");
      printRange(range1);  
      
      System.out.println("5 is present: " + range1.contains(5));
      System.out.println("(1,2,3) is present: " + range1.containsAll(Ints.asList(1, 2, 3)));
      System.out.println("Lower Bound: " + range1.lowerEndpoint());
      System.out.println("Upper Bound: " + range1.upperEndpoint());

      //create a range (a,b) = { x | a < x < b}
      Range<Integer> range2 = Range.open(0, 9);
      System.out.print("(0,9) : ");
      printRange(range2);

      //create a range (a,b] = { x | a < x <= b}
      Range<Integer> range3 = Range.openClosed(0, 9);
      System.out.print("(0,9] : ");
      printRange(range3);

      //create a range [a,b) = { x | a <= x < b}
      Range<Integer> range4 = Range.closedOpen(0, 9);
      System.out.print("[0,9) : ");
      printRange(range4);

      //create an open ended range (9, infinity
      Range<Integer> range5 = Range.greaterThan(9);
      System.out.println("(9,infinity) : ");
      System.out.println("Lower Bound: " + range5.lowerEndpoint());
      System.out.println("Upper Bound present: " + range5.hasUpperBound());

      Range<Integer> range6 = Range.closed(3, 5); 
      printRange(range6);

      //check a subrange [3,5] in [0,9]
      System.out.println("[0,9] encloses [3,5]:" + range1.encloses(range6));

      Range<Integer> range7 = Range.closed(9, 20); 
      printRange(range7);
      
      //check ranges to be connected  
      System.out.println("[0,9] is connected [9,20]:" + range1.isConnected(range7));

      Range<Integer> range8 = Range.closed(5, 15); 

      //intersection
      printRange(range1.intersection(range8));

      //span
      printRange(range1.span(range8));
   }

   private void printRange(Range<Integer> range) {  
   
      System.out.print("[ ");
      
      for(int grade : ContiguousSet.create(range, DiscreteDomain.integers())) {
         System.out.print(grade +" ");
      }
      System.out.println("]");
   }
}

Verify the Result

Compile the class using javac compiler as follows:
C:\Guava>javac GuavaTester.java
Now run the GuavaTester to see the result.
C:\Guava>java GuavaTester
See the result.
[0,9] : [ 0 1 2 3 4 5 6 7 8 9 ]
5 is present: true
(1,2,3) is present: true
Lower Bound: 0
Upper Bound: 9
(0,9) : [ 1 2 3 4 5 6 7 8 ]
(0,9] : [ 1 2 3 4 5 6 7 8 9 ]
[0,9) : [ 0 1 2 3 4 5 6 7 8 ]
(9,infinity) : 
Lower Bound: 9
Upper Bound present: false
[ 3 4 5 ]
[0,9] encloses [3,5]:true
[ 9 10 11 12 13 14 15 16 17 18 19 20 ]
[0,9] is connected [9,20]:true
[ 5 6 7 8 9 ]
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ]

No comments:

Post a Comment