【问题标题】:How to modify variable class from HashSet or HashMap of Class如何从 Class 的 HashSet 或 HashMap 修改变量类
【发布时间】:2014-12-18 16:18:02
【问题描述】:

我有一个 HashSet 和一个 Class 的 HashMap。如何修改类变量? 所以我有一个数据类,然后我创建数据的 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
}}

【问题讨论】:

    标签: java class hashmap hashset


    【解决方案1】:

    Data 类创建gettersetter 方法 然后获取对象并更改它

    public void setName(String name){
    this.name=name;
    }
    
    map.get("id").setName("newname");
    map.get("id").modifyNumber(number);
    

    【讨论】:

      【解决方案2】:

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

      否则集合将无法按预期运行。

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

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

      您可以更改其他属性。

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

      【讨论】:

        猜你喜欢
        • 2013-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多