【发布时间】:2015-12-31 14:38:02
【问题描述】:
我刚刚开始使用 Java,并且有一些关于集合的相当基本的问题。我想创建一个名为 DirectedGraph 的类,它有两个属性,一组顶点和一组边。用于这些集合的最佳数据结构是什么?似乎 Java 有几种集合的实现,我可能只想使用最基本、无特征的那种。
此外,当我尝试设置属性 vertices 和 edges 时,我收到诸如“设置无法通过类型解析”或“语法错误,插入“维度”以完成参考类型”之类的错误。这是一些代码以及我尝试注释掉的其他内容:
import java.util.Collections;
public class DirectedGraph {
private Set<> vertices;
// here are some other guesses that also didn't work:
// private Set<int[]> vertices;
// private Set<Integer> vertices;
// private Set<Integer> vertices = new HashSet<Integer>();
}
这些错误是怎么回事?
编辑:
如果我想要一个不带参数但将 vertices 和 edges 集初始化为空的构造函数,我该怎么做?
【问题讨论】:
-
您只是缺少导入。
import java.util.Set -
谢谢,我需要使用整数而不是整数?我之前尝试过导入 java.util.Set,但我想我这样做时在类中使用了错误的代码。
-
集合只能保存引用类型。不是原始类型。 Integer 是引用类型,int[] 是引用类型,而 int 是原始类型。要初始化一个空的、可变的集合,您可以使用
new HashSet<>()或new TreeSet<>()(或您希望使用的任何其他集合实现)。对于不可变的空集,使用Collections.emptySet()。 Java 教程:docs.oracle.com/javase/tutorial/collections 和 javadoc:docs.oracle.com/javase/8/docs/api/java/util/Set.html 涵盖了您的所有问题 -
@dsaxton 请仔细阅读我的回答。
java.lang之外的每个类都需要导入。HashSet就是其中之一;)。
标签: java collections set