Class SimpleSDGraph<N,​E>

java.lang.Object
xyz.cofe.collection.graph.SimpleSDGraph<N,​E>
Type Parameters:
N - Тип вершины
E - Тип ребра
All Implemented Interfaces:
DirectedGraph, Graph<N,​E>, SingleDirectedGraph<N,​E>, SingleGraph<N,​E>, GetReadLock, GetWriteLock, ReadWriteLockSupport, LongScn<SimpleSDGraph<N,​E>,​java.lang.Void>, Scn<SimpleSDGraph<N,​E>,​java.lang.Long,​java.lang.Void>
Direct Known Subclasses:
SimpleSDGraphSender

public class SimpleSDGraph<N,​E>
extends java.lang.Object
implements SingleDirectedGraph<N,​E>, ReadWriteLockSupport, LongScn<SimpleSDGraph<N,​E>,​java.lang.Void>
Однонаправленный граф. Примитивная реализация с переборными алгоритмами.
Author:
GoCha
  • Field Summary

    Fields 
    Modifier and Type Field Description
    protected java.util.Collection<Edge<N,​E>> edges
    Список ребр
    protected GraphFactory<N,​E> factory
    Фабрика
    protected java.util.Collection<N> nodes
    Список вершин
  • Constructor Summary

    Constructors 
    Constructor Description
    SimpleSDGraph()
    Конструктор
    SimpleSDGraph​(GraphFactory<N,​E> factory)
    Конструктор
  • Method Summary

    Modifier and Type Method Description
    void add​(N node)
    Добавляет вершину к графу
    protected void add​(Edge<N,​E> es)
    Добавление ребра
    void clearAll()
    Удалес все ребра и вершины
    void clearEdges()
    Удаляет все ребра
    boolean contains​(N node)
    Проверяет наличае вершины
    java.util.Collection<Edge<N,​E>> edgesOf​(N node)
    Возвращает ребра указанной вершины
    java.util.Collection<Edge<N,​E>> edgesOfNodeA​(N node)
    Возвращает ребра из вершины А
    java.util.Collection<Edge<N,​E>> edgesOfNodeB​(N node)
    Возвращает ребра из вершины Б
    E get​(N a, N b)
    Возвращает ребро между вершинами
    E getEdge​(N a, N b)
    Возвращает ребро между вершинами
    Eterable<Edge<N,​E>> getEdges()
    Возвращает Ребра и вершины графа
    java.util.List<E> getEdges​(N a, N b)
    Возвращает ребра между вершинами
    Eterable<N> getNodes()
    Возвращает вершины графа
    boolean hasEdge​(N a, N b)
    Проверка наличия ребра между вершинами
    protected int indexOf​(N node)
    Возвращает индекс вершины в списке вершин
    protected void onEdgeAdded​(Edge<N,​E> es)
    Срабатывает при добавлении ребра в граф
    protected void onEdgeRemoved​(Edge<N,​E> es)
    Срабатывает при удалении ребра из графа
    protected void onNodeAdded​(N node)
    Срабатывает при добавлении вершины в граф
    protected void onNodeRemoved​(N node)
    Срабатывает при удалении вершины из графа
    void remove​(N node)
    Удаляет вершину из графа
    protected void remove​(Edge<N,​E> es)
    Удаление ребра
    void removeEdge​(N a, N b)
    Удаление ребра
    void set​(N a, N b, E e)
    Устанавливает/Сбрасывает ребро между вершинами
    void setEdge​(N a, N b, E edge)
    Установка ребра между вершинами
    void setEdges​(N a, N b, java.lang.Iterable<E> edges)
    Установка ребр между вершинами

    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

    • factory

      protected GraphFactory<N,​E> factory
      Фабрика
    • edges

      protected java.util.Collection<Edge<N,​E>> edges
      Список ребр
    • nodes

      protected java.util.Collection<N> nodes
      Список вершин
  • Constructor Details

    • SimpleSDGraph

      public SimpleSDGraph()
      Конструктор
    • SimpleSDGraph

      public SimpleSDGraph​(GraphFactory<N,​E> factory)
      Конструктор
      Parameters:
      factory - Фабрика графа
  • Method Details

    • getNodes

      public Eterable<N> getNodes()
      Description copied from interface: Graph
      Возвращает вершины графа
      Specified by:
      getNodes in interface Graph<N,​E>
      Returns:
      вершины
    • getEdges

      public Eterable<Edge<N,​E>> getEdges()
      Description copied from interface: Graph
      Возвращает Ребра и вершины графа
      Specified by:
      getEdges in interface Graph<N,​E>
      Returns:
      Ребра и вершины
    • getEdges

      public java.util.List<E> getEdges​(N a, N b)
      Description copied from interface: Graph
      Возвращает ребра между вершинами
      Specified by:
      getEdges in interface Graph<N,​E>
      Parameters:
      a - Вершина А
      b - Вершина Б
      Returns:
      Ребра
    • edgesOf

      public java.util.Collection<Edge<N,​E>> edgesOf​(N node)
      Description copied from interface: Graph
      Возвращает ребра указанной вершины
      Specified by:
      edgesOf in interface Graph<N,​E>
      Parameters:
      node - Вершина
      Returns:
      ребра
    • edgesOfNodeA

      public java.util.Collection<Edge<N,​E>> edgesOfNodeA​(N node)
      Description copied from interface: Graph
      Возвращает ребра из вершины А
      Specified by:
      edgesOfNodeA in interface Graph<N,​E>
      Parameters:
      node - Вершина А
      Returns:
      Ребра
    • edgesOfNodeB

      public java.util.Collection<Edge<N,​E>> edgesOfNodeB​(N node)
      Description copied from interface: Graph
      Возвращает ребра из вершины Б
      Specified by:
      edgesOfNodeB in interface Graph<N,​E>
      Parameters:
      node - Вершина Б
      Returns:
      Ребра
    • hasEdge

      public boolean hasEdge​(N a, N b)
      Description copied from interface: Graph
      Проверка наличия ребра между вершинами
      Specified by:
      hasEdge in interface Graph<N,​E>
      Parameters:
      a - Вершина А
      b - Вершина Б
      Returns:
      Флаг наличия ребра
    • getEdge

      public E getEdge​(N a, N b)
      Description copied from interface: Graph
      Возвращает ребро между вершинами
      Specified by:
      getEdge in interface Graph<N,​E>
      Parameters:
      a - Вершина А
      b - Вершина Б
      Returns:
      Ребро
    • contains

      public boolean contains​(N node)
      Description copied from interface: Graph
      Проверяет наличае вершины
      Specified by:
      contains in interface Graph<N,​E>
      Parameters:
      node - Вершина
      Returns:
      true -вершина содержиться в графе
    • indexOf

      protected int indexOf​(N node)
      Возвращает индекс вершины в списке вершин
      Parameters:
      node - Вершина
      Returns:
      индекс или -1 если таковой нет в списке
    • onNodeRemoved

      protected void onNodeRemoved​(N node)
      Срабатывает при удалении вершины из графа
      Parameters:
      node - Вершина
    • onEdgeRemoved

      protected void onEdgeRemoved​(Edge<N,​E> es)
      Срабатывает при удалении ребра из графа
      Parameters:
      es - Ребро
    • onNodeAdded

      protected void onNodeAdded​(N node)
      Срабатывает при добавлении вершины в граф
      Parameters:
      node - Вершина
    • onEdgeAdded

      protected void onEdgeAdded​(Edge<N,​E> es)
      Срабатывает при добавлении ребра в граф
      Parameters:
      es - Ребро
    • remove

      protected void remove​(Edge<N,​E> es)
      Удаление ребра
      Parameters:
      es - Ребро
    • add

      protected void add​(Edge<N,​E> es)
      Добавление ребра
      Parameters:
      es - Ребро
    • add

      public void add​(N node)
      Description copied from interface: Graph
      Добавляет вершину к графу
      Specified by:
      add in interface Graph<N,​E>
      Parameters:
      node - Вершина
    • remove

      public void remove​(N node)
      Description copied from interface: Graph
      Удаляет вершину из графа
      Specified by:
      remove in interface Graph<N,​E>
      Parameters:
      node - Вершина
    • clearEdges

      public void clearEdges()
      Description copied from interface: Graph
      Удаляет все ребра
      Specified by:
      clearEdges in interface Graph<N,​E>
    • clearAll

      public void clearAll()
      Description copied from interface: Graph
      Удалес все ребра и вершины
      Specified by:
      clearAll in interface Graph<N,​E>
    • get

      public E get​(N a, N b)
      Description copied from interface: SingleGraph
      Возвращает ребро между вершинами
      Specified by:
      get in interface SingleGraph<N,​E>
      Parameters:
      a - Вершина А
      b - Вершина Б
      Returns:
      Ребро
    • set

      public void set​(N a, N b, E e)
      Description copied from interface: SingleGraph
      Устанавливает/Сбрасывает ребро между вершинами
      Specified by:
      set in interface SingleGraph<N,​E>
      Parameters:
      a - Вершина А
      b - Вершина Б
      e - Ребро
    • setEdge

      public void setEdge​(N a, N b, E edge)
      Description copied from interface: Graph
      Установка ребра между вершинами
      Specified by:
      setEdge in interface Graph<N,​E>
      Parameters:
      a - Вершина А
      b - Вершина Б
      edge - Ребро
    • setEdges

      public void setEdges​(N a, N b, java.lang.Iterable<E> edges)
      Description copied from interface: Graph
      Установка ребр между вершинами
      Specified by:
      setEdges in interface Graph<N,​E>
      Parameters:
      a - Вершина А
      b - Вершина Б
      edges - Ребра
    • removeEdge

      public void removeEdge​(N a, N b)
      Description copied from interface: Graph
      Удаление ребра
      Specified by:
      removeEdge in interface Graph<N,​E>
      Parameters:
      a - Вершина А
      b - Вершина Б