我有一个程序,我必须使用HashSet。我的问题来自HashSets主要包含一个对象,但如果我希望将信息发送到另一个类,它需要三个对象:一个字符串,一个int和一个布尔值。 作业说我必须使用HashSet
构造函数我正在尝试将信息发送到:
public Magic (String name, int size, boolean isVisible)
我有一个课程应该发送包含name
,size
和isVisible
的法术集。
Magic.go()类:
public void go()
{
int i = 0;
while (i < size) {
if (isVisible == true) {
System.out.println(name + "!");
}
i++;
}
}
答案 0 :(得分:4)
只需创建一个包含所有三个字段的对象:
import java.util.Objects;
public class NameSizeVisible {
private final String name;
private final int size;
private final boolean isVisible;
public NameSizeVisible(String name, int size, boolean isVisible) {
this.name = name;
this.size = size;
this.isVisible = isVisible;
}
public String getName() {
return name;
}
public int getSize() {
return size;
}
public boolean isVisible() {
return isVisible;
}
@Override
public int hashCode() {
return Objects.hash(name,size,isVisible);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
NameSizeVisible other = (NameSizeVisible) obj;
if (isVisible != other.isVisible)
return false;
if (!Objects.equals(name, other.name))
return false;
if (size != other.size)
return false;
return true;
}
}
答案 1 :(得分:-3)
您可以使用存储对象的HashSet。所以你会:
HashSet<Object> set = new HashSet<>();
set.add(name);
set.add(size);
set.add(isVisible);
然后,当您访问对象时,您只需将它们转换为各自的类型:
String name = "";
int size = 0;
boolean isVisible = false;
for (Object o : set) {
if (o instanceof String) {
name = (String) o;
} else if (o instanceof int) {
size = (int) o;
} else {
isVisible = (boolean) o;
}
}