public HashSet<String> Red;
public HashSet<String> Blue;
public HashSet<String> Colors;
public Data(HashSet<String> red, HashSet<String> blue, HashSet<String> colors) {
Red = red;
Blue = blue;
Colors = colors;
}
我尝试在此Object中存储3个Set / HashSet。这种方式是否正确,我可以访问Set / HashSet对象,就像普通的那样:
public Set<String> Red = new HashSet<String>();
答案 0 :(得分:1)
如果您询问如何访问HashMap
对象中的Data
要访问三个HashSet中的一个,您将创建一个新的Data对象,并在初始化Data对象后访问所选的公共字段:
HashSet<String> setOne = new HashSet<String>();
HashSet<String> setTwo = new HashSet<String>();
HashSet<String> setThree = new HashSet<String>();
Data d = new Data(setOne, setTwo, setThree);
d.Blue.add("this will be added to setTwo");
但是,通常情况下,您不希望拥有公共字段,而是将它们设为私有字段并提供getter / setter方法,因为这将提供encapsulation。
如果您询问是否应该参考界面或类
首先: HashSet是一个具体的类,Set是一个接口。 另外:引用类型决定了可以调用对象的方法。 (这将是等号的左侧,而右侧是动态类型)。
在构造函数中,您希望尽可能不具体。 如果你没有使用HashSet类的任何特殊功能,你应该倾向于引用Set接口,因为如果你想稍后更改Data类的实现,这会更灵活 - 它也可以让你的类的用户成为可能使用每个实现Set的类而不是限制使用HashSet。
然而,您是否需要特定类的特殊功能,您当然会引用该类。
答案 1 :(得分:0)
如果我理解正确,您是否在询问Set<String> Red = new HashSet<String>()
和HashSet<String> Red = new HashSet<String>()
是否允许表格?