我有一个类Passengers
,其成员属性String name
,int health
和String disease
具有setter和getter方法。 disease
变量最初将保留null
。这是班级
public class Passengers
{
private String name;
private int health;
private String disease;
public Passengers(String _name, int _health, String _disease)
{
name = _name;
health = _health;
disease = _disease;
}
public void setHealth(int _health)
{
health = _health;
}
public void setDisease(String _disease)
{
disease = _disease;
}
public String getName()
{
return name;
}
public int getHealth()
{
return health;
}
public String getDisease()
{
return disease;
}
}
我想知道的是如何将新字符串添加到此变量中,然后如何将其带走。例如,一名乘客账单从null
开始治疗他的疾病,然后感染疟疾和感冒。 Bill的disease
变量现在应该保留malaria, cold
。现在说用户选择治疗比尔的疟疾。我怎么会
1)加入疟疾和感冒
2)从disease
中减去疟疾?
每当我试图用
passengers[index].setDisease() = null;
它说“错误:类中的方法setDisease乘客不能应用于给定的类型:
必需:字符串
发现:没有参数“
答案 0 :(得分:3)
我建议将疾病列为Set的字符串。
Set<String> diseases = new HashSet<String>();
void addDisease(String disease) {
diseases.add(disease);
}
void removeDisease(String deisease) {
diseases.remove(disease);
}
在这种情况下, Set
比其他Collections
“更好”,因为它们无法保留重复项。
答案 1 :(得分:0)
您应该给班级List<String>
,例如ArrayList<String>
,并将疾病列入此列表。
更好的是,创建一个类或一个疾病的枚举,让你的Passenger类使用List<Disease>
并避免过度使用String。然后,您可以为班级公开addDisease(Disease disease)
和removeDisease(Disease disease)
方法。
顺便提一下,你上面的班级应该被命名为乘客,单数,而不是乘客,复数,因为它代表了单一乘客的概念。
答案 2 :(得分:0)
如果您使用的List
ArrayList
index
,您可以Set
访问您的元素(疾病名称),但是它会允许插入重复数据(同样的疾病可能)多次添加,不必增加疾病的数量,可能会出现一些问题)。
如果您使用HashSet
之类的particular disease by index
,它将仅允许使用唯一元素,因此不会出现与重复条目相关的问题,但同时您无法访问LinkedHashSet(HashSet with Linked approach)
(如果您需要,截至目前,我不知道你的进一步要求)。
据我所知,我建议您使用{{1}}它将为您提供FIFO顺序而不会出现重复插入问题。