我有一个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
}}
答案 0 :(得分:1)
为getter
课程创建setter
和Data
方法
然后获取对象并进行更改
public void setName(String name){
this.name=name;
}
map.get("id").setName("newname");
map.get("id").modifyNumber(number);
答案 1 :(得分:1)
要在HashSet
内工作,Data
类应覆盖equals
和hashcode
方法。
否则该套装将无法按预期运作。
在您的实现中,您无法覆盖这些方法。
但是,当您这样做时,您无法更改equals
和hashcode
中使用的属性值。这可能导致对象在其新值中位于错误的哈希桶中。
您可以更改其他属性。
hashset.iterator.next().setXXX();