java - 将Bag数据结构与Set或Linkedlist等其他图形实现API相比,有什么优势?

标签 java data-structures bag

这是与该问题相关的示例代码。该API试图实现一个具有邻接列表表示形式的图形,该图形是由图形中每个顶点索引的Bags数组。

public class Graph{

private final int V;          //no. of vertices
private Bag<Integer>[] adj;  // A bag for each vertex to store all adjacent vertices
.
.
.
}

与链接列表或Set相比,在此处使用Bag有什么优势吗?我知道行李是无序的,但是为什么当它们没有节省我们的时间或空间时又为什么要选择无序的 list 呢?

最佳答案

一个Bag可能用二叉搜索树或哈希表实现,给我们O(log n)或O(1)搜索。链表将进行O(n)个搜索。

集合仅允许唯一的元素,因此,如果您需要存储重复项,则需要一个袋子。 Java Collections库中的TreeSet或HashSet将分别为我们提供O(log n)或O(1)搜索。

通常,当您经常需要执行搜索或删除操作时,“Set”或“Bag”界面将更合适。如果您只需要添加到集合的末尾并对其进行迭代,则不会有太大的区别。

关于java - 将Bag数据结构与Set或Linkedlist等其他图形实现API相比,有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27649555/

相关文章:

java - 创建一个空数组列表,然后将索引设置为一个对象

algorithm - 将AVL树转换为红黑树

Java——同步 ArrayList 的最有效方法是什么?

database - Riak 数据类型集排序键是否可靠

java - 包移除()方法

java - 从任何地方访问组合框值

java - hibernate 搜索 Massindexer 错误

java - 如何在 pom.xml 之前在 Maven 中预加载一些依赖项/插件?

java - 使用 map 的自定义包类不允许我从类的实例调用方法,这是关键

camera - 如何从ros bag中提取相机信息和图像?