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;
}
我尝试在此对象内存储 3 个 Set/HashSet。这种方式是否正确,我可以像普通的那样访问 Set/HashSet 对象吗:
public Set<String> Red = new HashSet<String>();
最佳答案
如果您询问如何访问 Data
对象内的 HashMap
要访问三个 HashSet 之一,您需要创建一个新的 Data 对象,并在 Data 对象初始化后访问所选的公共(public)字段:
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");
但是,通常情况下,您不希望拥有公共(public)字段,而是将它们设为私有(private)并提供 getter/setter 方法,因为这将提供 encapsulation .
如果您询问是否应该引用接口(interface)或类
首先:HashSet 是一个具体类,Set 是一个接口(interface)。 另外:引用类型决定了可以对对象调用哪些方法。 (这将是等号的左侧,而右侧是动态类型)。
在构造函数中,您希望尽可能不具体。 如果您没有使用 HashSet 类的任何特殊功能,您应该倾向于引用 Set 接口(interface),因为如果您想稍后更改 Data 类的实现,这会更加灵活 - 它还使您的类的用户可以这样做使用每个实现 Set 的类,而不是限制使用 HashSet。
但是,如果您需要特定类的特殊功能,您当然会引用该类。
关于java - 如何在对象中存储 Set/HashSet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13157469/