如何从Class的HashSet或HashMap修改变量类

时间:2014-12-18 16:18:03

标签: java class hashmap hashset

我有一个HashSet和一个Class的HashMap。如何修改类变量? 所以我有一个类Data,然后我创建数据的HashSet和数据的HashMap 然后做人口。稍后,我想修改值名称和编号。

class Data {
private String name;
private int number;

public Data(String name, int number) {
    this.name = name;
    this.number = number;
}

public String toString() {
    return name + ":" + number;
}
public void modifyNumber (int i) {
    this.number+=i;
} }

public class Main {

public static void main(String[] args) {
Set<Data> dataSet = new LinkedHashSet<Data>();
 Map<String, Data> map = new LinkedHashMap<String, Data>();
 // I do the dataSet and map population, then do something else
 //now I want to modify the value of name and number  for HashSet and HashMap of Class
}}

2 个答案:

答案 0 :(得分:1)

getter课程创建setterData方法 然后获取对象并进行更改

public void setName(String name){
this.name=name;
}

map.get("id").setName("newname");
map.get("id").modifyNumber(number);

答案 1 :(得分:1)

要在HashSet内工作,Data类应覆盖equalshashcode方法。

否则该套装将无法按预期运作。

在您的实现中,您无法覆盖这些方法。

但是,当您这样做时,您无法更改equalshashcode中使用的属性值。这可能导致对象在其新值中位于错误的哈希桶中。

您可以更改其他属性。

hashset.iterator.next().setXXX();