加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 要列出的对象 – >为什么我要创建一个新对象?

发布时间:2020-12-15 05:01:09 所属栏目:Java 来源:网络整理
导读:我想了解为什么会发生以下情况: 数据类型库 public class Bank { String Blz; String Name; public String getBlz() { return Blz; } public void setBlz(String Blz) { this.Blz = Blz; } public String getName() { return Name; } public void setName(S
我想了解为什么会发生以下情况:

数据类型库

public class Bank {
    String Blz; String Name;

    public String getBlz() {
        return Blz;
    }
    public void setBlz(String Blz) {
        this.Blz = Blz;
    }
    public String getName() {
        return Name;
    }
    public void setName(String Name) {
        this.Name = Name;
    }    
}

这按预期工作:

public List<Bank> getSearchResult() {        
        List<Bank> banks = new ArrayList<>();
        Bank bank = new Bank();
        bank.setBlz("1");
        bank.setName("Berlin");
        banks.add(bank);
        bank = new Bank();
        bank.setBlz("8");
        bank.setName("München");
        banks.add(bank);
        return banks;
    }

该列表有第一个Element 1 / Berlin和第二个8 /München.但这个我不明白:

public List<Bank> getSearchResult() {            
        List<Bank> banks = new ArrayList<>();
        Bank bank = new Bank();
        bank.setBlz("1");
        bank.setName("Berlin");
        banks.add(bank);
        //bank = new Bank();
        bank.setBlz("8");
        bank.setName("München");
        banks.add(bank);
        return banks;
    }

如果我不创建如上所示的新对象库,则列表包含两次8 /München.为什么会这样?我不明白这一点,因为当我添加第一个元素时它包含1 /柏林.然后我覆盖值并添加第二个.

谢谢

解决方法

您正在修改现有的 List.列表允许复制,它不会阻止您添加两次具有相同值的对象.为了防止重复,您可以执行以下操作:

myHashSet = new HashSet<Bank>(bank);

然后:

banks = new List<Bank>(myHashSet);

Set不允许重复.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读