sách gpt4 ăn đã đi

java - 如果 Person 存在则更新 Set,如果不存在则添加它们

In lại 作者:搜寻专家 更新时间:2023-11-01 02:19:22 30 4
mua khóa gpt4 giày nike

假设我有一个非常简单的类 Person,其中包含姓名和地址:

lớp công khai Person {
Tên chuỗi;
Địa chỉ chuỗi;

public Person(final String name,
final String address) {
this.name = tên;
this.address = address;
}

công khai String getName() {
trả về tên;
}

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

public String address() {
return address;
}

public void setAddress(final String newAddress) {
this.address = newAddress;
}
}

我现在有一个包含所有已知 Person 对象的集合,我想仅根据姓名更新其中一个人的地址。为此,我有以下内容:

persons.stream()
.filter(person -> personToUpdate.getName().equalsIgnoreCase(person.getName()))
.forEach(person -> {
person.setAddress(personToUpdate.getAddress());
});

但是,我的问题是当我有一个完全不在 Set 中的新人时。我如何检查集合以查看此人是否存在,如果存在,请更新他们的地址。但如果它们不存在,请将它们添加到列表中。我知道这很简单,但无论出于何种原因,我现在都无法想到如何实现这一目标。我不想继续创建包含所有名称的列表、比较新名称、它们是否在列表中等等。我宁愿让它尽可能简洁。

编辑:名称将是唯一的!

câu trả lời hay nhất

除非您需要单行代码,否则您可以简单地利用 Không bắt buộc 的优势:

Optional person = persons.stream()
.filter(p -> personToUpdate.getName().equalsIgnoreCase(p.getName()))
.findFirst();

if (person.isPresent()) {
person.get().setAddress(personToUpdate.getAddress());
} khác {
persons.add(personToUpdate);
}

如果您使用的是 Java 9+,这看起来会更好:

persons.stream()
.filter(p -> personToUpdate.getName().equalsIgnoreCase(p.getName()))
.findFirst()
.ifPresentOrElse(
p -> p.setAddress(personToUpdate.getAddress()),
() -> persons.add(personToUpdate)
);

这当然假设名称是唯一的(正如您希望更新一个条目)。

关于java - 如果 Person 存在则更新 Set,如果不存在则添加它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52974325/

30 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress