我有一个名为center的元素。有了这个,我可以通过center.getCages()
(一个笼子里只有几个动物)进入动物笼子。
如果我在.stream()
上进行center.getCages()
,则可以在装有居民(cage.getResidents()
)的笼子上进行过滤
我想删除一个居民,他的身份证是从我的请求的删除中获得的。
<ns2:center xmlns:ns2="m1GIL:rest:tp">
<cages>
<capacity>25</capacity>
<name>usa</name>
<position>
<latitude>49.305</latitude>
<longitude>1.2157357</longitude>
</position>
<residents>
<cage>usa</cage>
<id>f2af5996-cc9c-4e97-9c00-3f847d533d50</id>
<name>Tic</name>
<species>Chipmunk</species>
</residents>
<residents>
<cage>usa</cage>
<id>c5e53e4c-7832-45bb-bd2d-3e75b5497987</id>
<name>Tac</name>
<species>Chipmunk</species>
</residents>
<residents>
<cage>usa</cage>
<id>53e21031-8314-47e4-a6ae-cbf8d78eb962</id>
<name>Bob</name>
<species>Arapaima gigas</species>
</residents>
<residents>
<cage>usa</cage>
<id>25b9723b-8cab-402c-8062-38054e3ea4d8</id>
<name>Toto</name>
<species>Arapaima gigas</species>
</residents>
</cages>
</ns2:center>
预先感谢!
编辑:
目前,我是这样做的:
Cage selectedCage = center
.getCages()
.stream()
.filter(cage -> cage
.getResidents()
.stream()
.anyMatch(an -> an.getId().equals(animal_id)))
.findFirst()
.orElseThrow(() -> new HTTPException(404));
selectedCage
.getResidents()
.removeIf(an -> an.getId().equals(animal_id));
但这没用。
第二编辑:
Cage selectedCage = center.getCages()
.stream()
.filter(cage -> cage.getResidents()
.stream()
.anyMatch(an -> an.getId().equals(UUID.fromString(animal_id))))
.findFirst()
.orElseThrow(() -> new HTTPException(404));
selectedCage.getResidents().removeIf(an -> an.getId().equals(UUID.fromString(animal_id)));
这正在工作!错误是我在字符串而不是在UUID上做到了相等。 有更好的方法吗?还是对的?