Java 设置/Collections 问题
Java Set / Collections issue
我刚开始 Java 并且有一些关于集合的相当基本的问题。我想创建一个名为 DirectedGraph 的 class,它有两个属性,一组顶点和一组边。用于这些集合的最佳数据结构是什么?似乎 Java 有几种集合的实现,我可能只想使用最基本的、没有特色的那种。
此外,当我尝试设置属性 vertices
和 edges
时,我收到类似 "Set cannot be resolved by a type" 或 "Syntax error, insert "Dimensions" to complete Reference Type" 的错误。这是一些代码以及我尝试注释掉的其他内容:
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
集初始化为空的构造函数,我该怎么做?
您只是缺少 Set
class 的导入语句。 Every class outside of the java.lang
package needs to be explicitely imported.
import java.util.Collections;
import java.util.Set; // <-- needs to import Set to use it
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>(); // <-- this would need "import java.util.HashSet" to compile
}
你的猜测全部正确。 You can't use a primitive type here 但你可以使用 int[]
(这不是原始类型,它是一个对象,它是 int
s 的数组)和 Integer
(对应于 class java.lang.Object
).
我刚开始 Java 并且有一些关于集合的相当基本的问题。我想创建一个名为 DirectedGraph 的 class,它有两个属性,一组顶点和一组边。用于这些集合的最佳数据结构是什么?似乎 Java 有几种集合的实现,我可能只想使用最基本的、没有特色的那种。
此外,当我尝试设置属性 vertices
和 edges
时,我收到类似 "Set cannot be resolved by a type" 或 "Syntax error, insert "Dimensions" to complete Reference Type" 的错误。这是一些代码以及我尝试注释掉的其他内容:
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
集初始化为空的构造函数,我该怎么做?
您只是缺少 Set
class 的导入语句。 Every class outside of the java.lang
package needs to be explicitely imported.
import java.util.Collections;
import java.util.Set; // <-- needs to import Set to use it
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>(); // <-- this would need "import java.util.HashSet" to compile
}
你的猜测全部正确。 You can't use a primitive type here 但你可以使用 int[]
(这不是原始类型,它是一个对象,它是 int
s 的数组)和 Integer
(对应于 class java.lang.Object
).