代码之家  ›  专栏  ›  技术社区  ›  Parth Prajapati

java中的哪个标准库数据结构为实现邻接列表提供了最短的复杂时间?[已关闭]

  •  0
  • Parth Prajapati  · 技术社区  · 7 年前

    ArrayList<T>[]
    LinkedList<T>[]
    ArrayList<ArrayList<T>>
    ArrayList<HashSet<T>>
    HashMap<Integer, List<T>>
    etc.
    

    我想知道,如果我需要在图上最小化这些操作,那么获得最佳时间复杂度的最佳数据结构是什么:

    1. 查找两个节点是否由边连接。
    2. 迭代特定顶点的所有邻居。

    请您指导一下,哪种标准库数据结构最适合在java中实现图的邻接列表,以获得最佳的空间和时间复杂度? (时间复杂度的优先级高于空间复杂度)

    2 回复  |  直到 7 年前
        1
  •  0
  •   Luca Negrini    7 年前

    我会说 LinkedHashSet<LinkedHashSet<T>> . 这是因为:

    1. contains()
    2. 迭代特定顶点的所有邻居:后续调用 iterator.next()
    3. 按权重排序顶点的所有邻居,或者像优先级队列一样:如果需要,请将内部实现更改为 TreeSet<T> 并实施 Comparable 节点类上的接口。 TreeSet 允许您在O(log n)中执行所有操作,但您的所有项目都将被排序。

    资料来源: Java Generics and Collections

        2
  •  0
  •   Xyrus    7 年前

    保持简单,创建一个节点类,该类包含一个树映射,该树映射保存对其连接的节点的引用。

    基于您提供的信息。