com.google.appengine.api.datastore

## Class KeyRange

- java.lang.Object
- - com.google.appengine.api.datastore.KeyRange

- All Implemented Interfaces:
    java.io.Serializable, java.lang.Iterable<Key>

      public final class KeyRange
      extends java.lang.Object
      implements java.lang.Iterable<Key>, java.io.Serializable

  Represents a range of unique datastore identifiers from `getStart().getId()` to `getEnd().getId()` inclusive. If an instance of this class is the result of a call to `DatastoreService.allocateIds()`, the `Keys` returned by this instance have been consumed in the datastore's id-space and are guaranteed never to be reused.
  This class can be used to construct `Entities` with `Keys` that have specific id values without fear of the datastore creating new records with those same ids at a later date. This can be helpful as part of a data migration or large bulk upload where you may need to preserve existing ids and relationships between entities.
  This class is threadsafe but the `Iterators` returned by `iterator()` are not.
  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `KeyRange(Key parent, java.lang.String kind, long start, long end)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `equals(java.lang.Object obj)`
    `Key` | `getEnd()`
    `long` | `getSize()`
    `Key` | `getStart()`
    `int` | `hashCode()`
    `java.util.Iterator<Key>` | `iterator()`

    - ### Methods inherited from class java.lang.Object

      `getClass, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

- - ### Constructor Detail

    - #### KeyRange

          public KeyRange(Key parent,
                          java.lang.String kind,
                          long start,
                          long end)

  - ### Method Detail

    - #### getStart

          public Key getStart()

      Returns:
        The first `Key` in the range.

    - #### getEnd

          public Key getEnd()

      Returns:
        The last `Key` in the range.

    - #### getSize

          public long getSize()

      Returns:
        The size of the range.

    - #### iterator

          public java.util.Iterator<Key> iterator()

      Specified by:
        `iterator` in interface `java.lang.Iterable<Key>`

    - #### equals

          public boolean equals(java.lang.Object obj)

      Overrides:
        `equals` in class `java.lang.Object`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`