# KeyRange
Date: 2012-02-24

## 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
`KeyRange(Key parent, java.lang.String kind, long start, long end)`

Method Summary
`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`

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`