Class IntArraySet

  • All Implemented Interfaces:
    IntCollection, IntIterable, IntSet, java.io.Serializable, java.lang.Cloneable, java.lang.Iterable<java.lang.Integer>, java.util.Collection<java.lang.Integer>, java.util.Set<java.lang.Integer>

    public class IntArraySet
    extends AbstractIntSet
    implements java.io.Serializable, java.lang.Cloneable
    A simple, brute-force implementation of a set based on a backing array.

    The main purpose of this implementation is that of wrapping cleanly the brute-force approach to the storage of a very small number of items: just put them into an array and scan linearly to find an item.

    See Also:
    Serialized Form
    • Constructor Detail

      • IntArraySet

        public IntArraySet​(int[] a)
        Creates a new array set using the given backing array. The resulting set will have as many elements as the array.

        It is responsibility of the caller that the elements of a are distinct.

        Parameters:
        a - the backing array.
      • IntArraySet

        public IntArraySet()
        Creates a new empty array set.
      • IntArraySet

        public IntArraySet​(int capacity)
        Creates a new empty array set of given initial capacity.
        Parameters:
        capacity - the initial capacity.
      • IntArraySet

        public IntArraySet​(IntCollection c)
        Creates a new array set copying the contents of a given collection.
        Parameters:
        c - a collection.
      • IntArraySet

        public IntArraySet​(java.util.Collection<? extends java.lang.Integer> c)
        Creates a new array set copying the contents of a given set.
        Parameters:
        c - a collection.
      • IntArraySet

        public IntArraySet​(int[] a,
                           int size)
        Creates a new array set using the given backing array and the given number of elements of the array.

        It is responsibility of the caller that the first size elements of a are distinct.

        Parameters:
        a - the backing array.
        size - the number of valid elements in a.
    • Method Detail

      • iterator

        public IntIterator iterator()
        Description copied from interface: IntCollection
        Returns a type-specific iterator on the elements of this collection.

        Note that this specification strengthens the one given in Iterable.iterator(), which was already strengthened in the corresponding type-specific class, but was weakened by the fact that this interface extends Collection.

        Specified by:
        iterator in interface java.util.Collection<java.lang.Integer>
        Specified by:
        iterator in interface IntCollection
        Specified by:
        iterator in interface IntIterable
        Specified by:
        iterator in interface IntSet
        Specified by:
        iterator in interface java.lang.Iterable<java.lang.Integer>
        Specified by:
        iterator in interface java.util.Set<java.lang.Integer>
        Specified by:
        iterator in class AbstractIntSet
        Returns:
        a type-specific iterator on the elements of this collection.
        See Also:
        Iterable.iterator()
      • contains

        public boolean contains​(int k)
        Description copied from class: AbstractIntCollection
        Returns true if this collection contains the specified element.

        This implementation iterates over the elements in the collection, looking for the specified element.

        Specified by:
        contains in interface IntCollection
        Overrides:
        contains in class AbstractIntCollection
        See Also:
        Collection.contains(Object)
      • size

        public int size()
        Specified by:
        size in interface java.util.Collection<java.lang.Integer>
        Specified by:
        size in interface java.util.Set<java.lang.Integer>
        Specified by:
        size in class java.util.AbstractCollection<java.lang.Integer>
      • remove

        public boolean remove​(int k)
        Description copied from class: AbstractIntSet
        Removes an element from this set.

        Note that the corresponding method of a type-specific collection is rem(). This unfortunate situation is caused by the clash with the similarly named index-based method in the List interface. Delegates to the type-specific rem() method implemented by type-specific abstract Collection superclass.

        Specified by:
        remove in interface IntSet
        Overrides:
        remove in class AbstractIntSet
        See Also:
        Collection.remove(Object)
      • add

        public boolean add​(int k)
        Description copied from class: AbstractIntCollection
        Ensures that this collection contains the specified element (optional operation).

        This implementation always throws an UnsupportedOperationException.

        Specified by:
        add in interface IntCollection
        Overrides:
        add in class AbstractIntCollection
        See Also:
        Collection.add(Object)
      • clear

        public void clear()
        Specified by:
        clear in interface java.util.Collection<java.lang.Integer>
        Specified by:
        clear in interface java.util.Set<java.lang.Integer>
        Overrides:
        clear in class java.util.AbstractCollection<java.lang.Integer>
      • isEmpty

        public boolean isEmpty()
        Specified by:
        isEmpty in interface java.util.Collection<java.lang.Integer>
        Specified by:
        isEmpty in interface java.util.Set<java.lang.Integer>
        Overrides:
        isEmpty in class java.util.AbstractCollection<java.lang.Integer>
      • clone

        public IntArraySet clone()
        Returns a deep copy of this set.

        This method performs a deep copy of this array set; the data stored in the set, however, is not cloned. Note that this makes a difference only for object keys.

        Returns:
        a deep copy of this set.