Class BooleanBag

java.lang.Object
com.github.tommyettinger.ds.BooleanList
com.github.tommyettinger.ds.BooleanBag
All Implemented Interfaces:
Arrangeable, Ordered.OfBoolean, PrimitiveCollection<Boolean>, PrimitiveCollection.OfBoolean

public class BooleanBag extends BooleanList
An unordered List of boolean items. This allows efficient iteration via a reused iterator or via index. This class avoids a memory copy when removing elements (the last element is moved to the removed element's position). Items are permitted to change position in the ordering when any item is removed or added. Although this won't keep an order during modifications, you can BooleanList.sort() the bag to ensure, if no modifications are made later, that the iteration will happen in sorted order.
  • Constructor Details

    • BooleanBag

      public BooleanBag()
      Creates an ordered bag with a capacity of 10.
    • BooleanBag

      public BooleanBag(int capacity)
      Creates an ordered bag with the specified capacity.
      Parameters:
      capacity -
    • BooleanBag

      public BooleanBag(BooleanList list)
      Creates a new bag containing the elements in the specific list or bag. The capacity is set to the number of elements, so any subsequent elements added will cause the backing array to be grown.
      Parameters:
      list - another BooleanList or BooleanBag
    • BooleanBag

      public BooleanBag(boolean[] array)
      Creates a new bag containing the elements in the specified array. The capacity is set to the number of elements, so any subsequent elements added will cause the backing array to be grown.
      Parameters:
      array - a non-null boolean array to add to this bag
    • BooleanBag

      public BooleanBag(boolean[] array, int startIndex, int count)
      Creates a new bag containing the elements in the specified array. The capacity is set to the number of elements, so any subsequent elements added will cause the backing array to be grown.
      Parameters:
      array - a non-null boolean array to add to this bag
      startIndex - the first index in array to use
      count - how many items to use from array
    • BooleanBag

      public BooleanBag(PrimitiveCollection.OfBoolean coll)
      Creates a new bag containing the items in the specified PrimitiveCollection.OfBoolean.
      Parameters:
      coll - a primitive collection that will have its contents added to this
    • BooleanBag

      public BooleanBag(BooleanIterator coll)
      Creates a new instance containing the items in the specified iterator.
      Parameters:
      coll - an iterator that will have its remaining contents added to this
    • BooleanBag

      public BooleanBag(Ordered.OfBoolean other)
      Copies the given Ordered.OfBoolean into a new bag.
      Parameters:
      other - another Ordered.OfBoolean
    • BooleanBag

      public BooleanBag(Ordered.OfBoolean other, int offset, int count)
      Creates a new bag by copying count items from the given Ordered, starting at offset in that Ordered, into this.
      Parameters:
      other - another Ordered.OfBoolean
      offset - the first index in other's ordering to draw an item from
      count - how many items to copy from other
  • Method Details

    • keepsOrder

      public boolean keepsOrder()
      Returns true if this implementation retains order, which it does not.
      Overrides:
      keepsOrder in class BooleanList
      Returns:
      false
    • insert

      public void insert(int index, boolean element)
      This always adds element to the end of this bag's ordering.
      Overrides:
      insert in class BooleanList
      Parameters:
      index - ignored
      element - element to be inserted
    • removeAt

      public boolean removeAt(int index)
      Removes and returns the item at the specified index. Note that this is equivalent to List.remove(int), but can't have that name because we also have BooleanList.remove(boolean) that removes a value, rather than an index.
      Overrides:
      removeAt in class BooleanList
      Parameters:
      index - the index of the item to remove and return
      Returns:
      the removed item
    • removeRange

      public void removeRange(int start, int end)
      Removes the items between the specified start index, inclusive, and end index, exclusive. Note that this takes different arguments than some other range-related methods; this needs a start index and an end index, rather than a count of items. This matches the behavior in the JDK collections.
      Specified by:
      removeRange in interface Ordered.OfBoolean
      Overrides:
      removeRange in class BooleanList
      Parameters:
      start - the first index to remove, inclusive
      end - the last index (after what should be removed), exclusive
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in interface PrimitiveCollection<Boolean>
      Overrides:
      hashCode in class BooleanList
    • with

      public static BooleanBag with()
      Constructs an empty bag. This is usually less useful than just using the constructor, but can be handy in some code-generation scenarios when you don't know how many arguments you will have.
      Returns:
      a new bag containing nothing
    • with

      public static BooleanBag with(boolean item)
      Creates a new BooleanBag that holds only the given item, but can be resized.
      Parameters:
      item - a boolean item
      Returns:
      a new BooleanBag that holds the given item
    • with

      public static BooleanBag with(boolean item0, boolean item1)
      Creates a new BooleanBag that holds only the given items, but can be resized.
      Parameters:
      item0 - a boolean item
      item1 - a boolean item
      Returns:
      a new BooleanBag that holds the given items
    • with

      public static BooleanBag with(boolean item0, boolean item1, boolean item2)
      Creates a new BooleanBag that holds only the given items, but can be resized.
      Parameters:
      item0 - a boolean item
      item1 - a boolean item
      item2 - a boolean item
      Returns:
      a new BooleanBag that holds the given items
    • with

      public static BooleanBag with(boolean item0, boolean item1, boolean item2, boolean item3)
      Creates a new BooleanBag that holds only the given items, but can be resized.
      Parameters:
      item0 - a boolean item
      item1 - a boolean item
      item2 - a boolean item
      item3 - a boolean item
      Returns:
      a new BooleanBag that holds the given items
    • with

      public static BooleanBag with(boolean item0, boolean item1, boolean item2, boolean item3, boolean item4)
      Creates a new BooleanBag that holds only the given items, but can be resized.
      Parameters:
      item0 - a boolean item
      item1 - a boolean item
      item2 - a boolean item
      item3 - a boolean item
      item4 - a boolean item
      Returns:
      a new BooleanBag that holds the given items
    • with

      public static BooleanBag with(boolean item0, boolean item1, boolean item2, boolean item3, boolean item4, boolean item5)
      Creates a new BooleanBag that holds only the given items, but can be resized.
      Parameters:
      item0 - a boolean item
      item1 - a boolean item
      item2 - a boolean item
      item3 - a boolean item
      item4 - a boolean item
      item5 - a boolean item
      Returns:
      a new BooleanBag that holds the given items
    • with

      public static BooleanBag with(boolean item0, boolean item1, boolean item2, boolean item3, boolean item4, boolean item5, boolean item6)
      Creates a new BooleanBag that holds only the given items, but can be resized.
      Parameters:
      item0 - a boolean item
      item1 - a boolean item
      item2 - a boolean item
      item3 - a boolean item
      item4 - a boolean item
      item5 - a boolean item
      item6 - a boolean item
      Returns:
      a new BooleanBag that holds the given items
    • with

      public static BooleanBag with(boolean item0, boolean item1, boolean item2, boolean item3, boolean item4, boolean item5, boolean item6, boolean item7)
      Creates a new BooleanBag that holds only the given items, but can be resized.
      Parameters:
      item0 - a boolean item
      item1 - a boolean item
      item2 - a boolean item
      item3 - a boolean item
      item4 - a boolean item
      item5 - a boolean item
      item6 - a boolean item
      Returns:
      a new BooleanBag that holds the given items
    • with

      public static BooleanBag with(boolean... varargs)
      Creates a new BooleanBag that holds only the given items, but can be resized. This overload will only be used when an array is supplied and the type of the items requested is the component type of the array, or if varargs are used and there are 9 or more arguments.
      Parameters:
      varargs - a boolean varargs or boolean array; remember that varargs allocate
      Returns:
      a new BooleanBag that holds the given items
    • parse

      public static BooleanBag parse(String str, String delimiter)
      Calls parse(String, String, boolean) with brackets set to false.
      Parameters:
      str - a String that will be parsed in full
      delimiter - the delimiter between items in str
      Returns:
      a new collection parsed from str
    • parse

      public static BooleanBag parse(String str, String delimiter, boolean brackets)
      Creates a new collection and fills it by calling PrimitiveCollection.OfBoolean.addLegible(String, String, int, int) on either all of str (if brackets is false) or str without its first and last chars (if brackets is true). Each item is expected to be separated by delimiter.
      Parameters:
      str - a String that will be parsed in full (depending on brackets)
      delimiter - the delimiter between items in str
      brackets - if true, the first and last chars in str will be ignored
      Returns:
      a new collection parsed from str
    • parse

      public static BooleanBag parse(String str, String delimiter, int offset, int length)
      Creates a new collection and fills it by calling PrimitiveCollection.OfBoolean.addLegible(String, String, int, int) with the given four parameters as-is.
      Parameters:
      str - a String that will have the given section parsed
      delimiter - the delimiter between items in str
      offset - the first position to parse in str, inclusive
      length - how many chars to parse, starting from offset
      Returns:
      a new collection parsed from str