Class IndexSetBasic<A extends java.lang.Comparable<A>>

java.lang.Object
xyz.cofe.collection.IndexSetBasic<A>
Type Parameters:
A - Тип элементов в множестве
All Implemented Interfaces:
IndexSet<A>, GetReadLock, GetWriteLock, ReadWriteLockSupport, LongScn<IndexSetBasic<A>,​java.lang.Void>, Scn<IndexSetBasic<A>,​java.lang.Long,​java.lang.Void>

public class IndexSetBasic<A extends java.lang.Comparable<A>>
extends java.lang.Object
implements IndexSet<A>, ReadWriteLockSupport, LongScn<IndexSetBasic<A>,​java.lang.Void>
Список содежащий уникальные элементы, отсортированные в порядке возрастания
Author:
Kamnev Georgiy (nt.gocha@gmail.com)
  • Field Summary

    Fields 
    Modifier and Type Field Description
    protected int headEntryCurrentDepth
    Текущаяя глубина поиска headEntry
    protected long headEntryFinished
    Время (нс) конца поиска (exit in try/finally amp;& headEntryCurrentDeep = 1)
    protected int headEntryGetCall
    Кол-во чтений (get(idx))
    protected int headEntryLastMaxDepth
    Последняя максимальная глубина поиска
    protected int headEntryScanSize
    Размер сканированных данных
    protected long headEntryStarted
    Время (нс) начало поиска (enter in try/finally && headEntryCurrentDeep = 1)
    protected java.util.List<A> list  
    protected A maxValue  
    protected A minValue  
    protected int tailEntryCurrentDepth
    Текущаяя глубина поиска tailEntry
    protected long tailEntryFinished
    Время (нс) конца поиска (exit in try/finally && tailEntryCurrentDeep = 1)
    protected int tailEntryGetCall
    Кол-во чтений (get(idx))
    protected int tailEntryLastMaxDepth
    Последняя максимальная глубина поиска
    protected int tailEntryScanSize
    Размер сканированных данных
    protected long tailEntryStarted
    Время (нс) начало поиска (enter in try/finally && tailEntryCurrentDeep = 1)
  • Constructor Summary

    Constructors 
    Constructor Description
    IndexSetBasic()
    Конструктор
  • Method Summary

    Modifier and Type Method Description
    int add​(A a)
    Добавление элемента в список
    void add​(java.lang.Iterable<A> adds, java.util.function.BiConsumer<java.lang.Integer,​A> added)
    Добавление элементов в список
    void add​(IndexSet<A> adds, java.util.function.BiConsumer<java.lang.Integer,​A> added)
    Добавление элементов в список
    IndexSet<A> append​(A... items)
    Добавление элемента в список
    void clear()
    Удаление
    protected java.util.Comparator<A> comparator()  
    protected java.util.List createList()
    Создание списка который будет хранить значения
    void each​(java.util.function.Consumer<A> iter)
    Обход всех элементов
    void eachByIndex​(int begin, int endEx, java.util.function.BiConsumer<java.lang.Integer,​A> consumer)
    Обход элементов с получением индекса
    void eachByValue​(A begin, boolean incBegin, A end, boolean incEnd, java.util.function.BiConsumer<java.lang.Integer,​A> consumer)
    Обход элементов в списке
    void eachByValue​(A begin, boolean incBegin, A end, boolean incEnd, QuadConsumer<java.lang.Integer,​A,​java.lang.Integer,​java.lang.Integer> consumer)
    Обход элементов в списке
    boolean exists​(A a)
    Проверка наличие элемента
    protected int findIdexOf​(A a)
    Поиск индекса элемента
    protected int findIdexOfInRange​(A a, int begin, int endex)  
    A get​(int idx)
    Возвращает элемент по его индексу
    Pair<java.lang.Integer,​A> headEntry​(A a, boolean strong, int beginIndex, int endExIndex)
    Поиск головы, где искомое_значения <= a
    int indexOf​(A a)
    Поиск индекс элемента
    protected int indexOfScanRange()  
    A max()
    Возвращат максимальное значение
    A min()
    Возвращат минимальное значение
    Pair<A,​A> minMax()
    Возвращает диапазон (мин/макс) значений
    int remove​(A a)
    Удаление элемента
    void remove​(java.lang.Iterable<A> removes, java.util.function.BiConsumer<java.lang.Integer,​A> removed)
    Удаление элементов из списока
    void remove​(IndexSet<A> removes, java.util.function.BiConsumer<java.lang.Integer,​A> removed)
    Удаление элементов из списока
    A removeByIndex​(int idx)
    Удаляет элемент по его индексу
    int size()
    Возвращает кол-во элементов
    protected SortInsert<java.util.List,​A> sortInsert()  
    java.util.stream.Stream<Pair<A,​java.lang.Integer>> stream()
    Создание стрима
    Pair<java.lang.Integer,​A> tailEntry​(A a, boolean strong, int beginIndex, int endExIndex)
    Поиск хвоста, где искомое_значения >= a

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface xyz.cofe.scn.LongScn

    nextscn, nextscn, scn

    Methods inherited from interface xyz.cofe.ecolls.ReadWriteLockSupport

    getReadLock, getWriteLock, readLock, readLock, writeLock, writeLock
  • Field Details

    • list

      protected final java.util.List<A extends java.lang.Comparable<A>> list
    • minValue

      protected A extends java.lang.Comparable<A> minValue
    • maxValue

      protected A extends java.lang.Comparable<A> maxValue
    • tailEntryLastMaxDepth

      protected int tailEntryLastMaxDepth
      Последняя максимальная глубина поиска
    • tailEntryCurrentDepth

      protected int tailEntryCurrentDepth
      Текущаяя глубина поиска tailEntry
    • tailEntryStarted

      protected long tailEntryStarted
      Время (нс) начало поиска (enter in try/finally && tailEntryCurrentDeep = 1)
    • tailEntryFinished

      protected long tailEntryFinished
      Время (нс) конца поиска (exit in try/finally && tailEntryCurrentDeep = 1)
    • tailEntryScanSize

      protected int tailEntryScanSize
      Размер сканированных данных
    • tailEntryGetCall

      protected int tailEntryGetCall
      Кол-во чтений (get(idx))
    • headEntryLastMaxDepth

      protected int headEntryLastMaxDepth
      Последняя максимальная глубина поиска
    • headEntryCurrentDepth

      protected int headEntryCurrentDepth
      Текущаяя глубина поиска headEntry
    • headEntryStarted

      protected long headEntryStarted
      Время (нс) начало поиска (enter in try/finally && headEntryCurrentDeep = 1)
    • headEntryFinished

      protected long headEntryFinished
      Время (нс) конца поиска (exit in try/finally amp;& headEntryCurrentDeep = 1)
    • headEntryScanSize

      protected int headEntryScanSize
      Размер сканированных данных
    • headEntryGetCall

      protected int headEntryGetCall
      Кол-во чтений (get(idx))
  • Constructor Details

  • Method Details

    • createList

      protected java.util.List createList()
      Создание списка который будет хранить значения
      Returns:
      список для хранения значений
    • size

      public int size()
      Возвращает кол-во элементов
      Specified by:
      size in interface IndexSet<A extends java.lang.Comparable<A>>
      Returns:
      кол-во элементов
    • get

      public A get​(int idx)
      Возвращает элемент по его индексу
      Specified by:
      get in interface IndexSet<A extends java.lang.Comparable<A>>
      Parameters:
      idx - индекс
      Returns:
      элемент
    • exists

      public boolean exists​(A a)
      Проверка наличие элемента
      Specified by:
      exists in interface IndexSet<A extends java.lang.Comparable<A>>
      Parameters:
      a - элемент
      Returns:
      true - элемент присуствует
    • findIdexOf

      protected int findIdexOf​(A a)
      Поиск индекса элемента
      Parameters:
      a - элемент
      Returns:
      индекс или -1
    • indexOfScanRange

      protected int indexOfScanRange()
    • findIdexOfInRange

      protected int findIdexOfInRange​(A a, int begin, int endex)
    • indexOf

      public int indexOf​(A a)
      Поиск индекс элемента
      Specified by:
      indexOf in interface IndexSet<A extends java.lang.Comparable<A>>
      Parameters:
      a - элемент
      Returns:
      индекс или -1
    • each

      public void each​(java.util.function.Consumer<A> iter)
      Обход всех элементов
      Specified by:
      each in interface IndexSet<A extends java.lang.Comparable<A>>
      Parameters:
      iter - потребитель
    • stream

      public java.util.stream.Stream<Pair<A,​java.lang.Integer>> stream()
      Создание стрима
      Specified by:
      stream in interface IndexSet<A extends java.lang.Comparable<A>>
      Returns:
      стрим элементов
    • eachByIndex

      public void eachByIndex​(int begin, int endEx, java.util.function.BiConsumer<java.lang.Integer,​A> consumer)
      Обход элементов с получением индекса
      Specified by:
      eachByIndex in interface IndexSet<A extends java.lang.Comparable<A>>
      Parameters:
      begin - С какого индекса начать
      endEx - По какой исключительно закнчить
      consumer - Функция fn(index,item):any принимающая значения
    • eachByValue

      public void eachByValue​(A begin, boolean incBegin, A end, boolean incEnd, QuadConsumer<java.lang.Integer,​A,​java.lang.Integer,​java.lang.Integer> consumer)
      Description copied from interface: IndexSet
      Обход элементов в списке
      Specified by:
      eachByValue in interface IndexSet<A extends java.lang.Comparable<A>>
      Parameters:
      begin - С какого элемента начать
      incBegin - Включить элемент в список
      end - До какого элемента продолжить
      incEnd - Включить конечный элемент в список
      consumer - Функция принимающая значения:
      fn(index,item,visitIndex,visitSize):any ,где:
      index - индекс элемента в списке
      item - элемент в списке
      visitIndex - индекс в выборке
      visitSize - Объем вборки
    • eachByValue

      public void eachByValue​(A begin, boolean incBegin, A end, boolean incEnd, java.util.function.BiConsumer<java.lang.Integer,​A> consumer)
      Description copied from interface: IndexSet
      Обход элементов в списке
      Specified by:
      eachByValue in interface IndexSet<A extends java.lang.Comparable<A>>
      Parameters:
      begin - С какого элемента начать
      incBegin - Включить элемент в список
      end - До какого элемента продолжить
      incEnd - Включить конечный элемент в список
      consumer - Функция принимающая значения:
      fn(index,item):any ,где:
      index - индекс элемента в списке
      item - элемент в списке
    • comparator

      protected java.util.Comparator<A> comparator()
    • sortInsert

      protected SortInsert<java.util.List,​A> sortInsert()
    • add

      public int add​(A a)
      Description copied from interface: IndexSet
      Добавление элемента в список
      Specified by:
      add in interface IndexSet<A extends java.lang.Comparable<A>>
      Parameters:
      a - элемент
      Returns:
      индекс элемента
    • append

      public IndexSet<A> append​(A... items)
      Description copied from interface: IndexSet
      Добавление элемента в список
      Specified by:
      append in interface IndexSet<A extends java.lang.Comparable<A>>
      Parameters:
      items - элементы
      Returns:
      self ссылка
    • minMax

      public Pair<A,​A> minMax()
      Description copied from interface: IndexSet
      Возвращает диапазон (мин/макс) значений
      Specified by:
      minMax in interface IndexSet<A extends java.lang.Comparable<A>>
      Returns:
      диапазон или null, если список пуст
    • min

      public A min()
      Description copied from interface: IndexSet
      Возвращат минимальное значение
      Specified by:
      min in interface IndexSet<A extends java.lang.Comparable<A>>
      Returns:
      минимальное значение
    • max

      public A max()
      Description copied from interface: IndexSet
      Возвращат максимальное значение
      Specified by:
      max in interface IndexSet<A extends java.lang.Comparable<A>>
      Returns:
      максимальное значение
    • add

      public void add​(java.lang.Iterable<A> adds, java.util.function.BiConsumer<java.lang.Integer,​A> added)
      Description copied from interface: IndexSet
      Добавление элементов в список
      Specified by:
      add in interface IndexSet<A extends java.lang.Comparable<A>>
      Parameters:
      adds - элементы
      added - добавленные элементы
    • add

      public void add​(IndexSet<A> adds, java.util.function.BiConsumer<java.lang.Integer,​A> added)
      Description copied from interface: IndexSet
      Добавление элементов в список
      Specified by:
      add in interface IndexSet<A extends java.lang.Comparable<A>>
      Parameters:
      adds - элементы
      added - добавленные элементы
    • remove

      public int remove​(A a)
      Description copied from interface: IndexSet
      Удаление элемента
      Specified by:
      remove in interface IndexSet<A extends java.lang.Comparable<A>>
      Parameters:
      a - элемент
      Returns:
      индекс удаленного элемента
    • remove

      public void remove​(java.lang.Iterable<A> removes, java.util.function.BiConsumer<java.lang.Integer,​A> removed)
      Description copied from interface: IndexSet
      Удаление элементов из списока
      Specified by:
      remove in interface IndexSet<A extends java.lang.Comparable<A>>
      Parameters:
      removes - элементы
      removed - удаленные элементы
    • remove

      public void remove​(IndexSet<A> removes, java.util.function.BiConsumer<java.lang.Integer,​A> removed)
      Description copied from interface: IndexSet
      Удаление элементов из списока
      Specified by:
      remove in interface IndexSet<A extends java.lang.Comparable<A>>
      Parameters:
      removes - элементы
      removed - удаленные элементы
    • removeByIndex

      public A removeByIndex​(int idx)
      Description copied from interface: IndexSet
      Удаляет элемент по его индексу
      Specified by:
      removeByIndex in interface IndexSet<A extends java.lang.Comparable<A>>
      Parameters:
      idx - индекс
      Returns:
      Удаленный элемент
    • clear

      public void clear()
      Description copied from interface: IndexSet
      Удаление
      Specified by:
      clear in interface IndexSet<A extends java.lang.Comparable<A>>
    • tailEntry

      public Pair<java.lang.Integer,​A> tailEntry​(A a, boolean strong, int beginIndex, int endExIndex)
      Description copied from interface: IndexSet
      Поиск хвоста, где искомое_значения >= a
      Specified by:
      tailEntry in interface IndexSet<A extends java.lang.Comparable<A>>
      Parameters:
      a - значение с которым производится сравнение
      strong - строгое сравнение:
      true - искомое_значения > a
      false - искомое_значения >= a
      beginIndex - начальный индекс с которого производить поиск
      endExIndex - коненый индекс, по который исключительно производить поиск
      Returns:
      начало хвоста или null
    • headEntry

      public Pair<java.lang.Integer,​A> headEntry​(A a, boolean strong, int beginIndex, int endExIndex)
      Description copied from interface: IndexSet
      Поиск головы, где искомое_значения <= a
      Specified by:
      headEntry in interface IndexSet<A extends java.lang.Comparable<A>>
      Parameters:
      a - значение с которым производится сравнение
      strong - строгое сравнение:
      true - искомое_значения < a
      false - искомое_значения <= a
      beginIndex - начальный индекс с которого производить поиск
      endExIndex - коненый индекс, по который исключительно производить поиск
      Returns:
      конец головы или null