从另一个列表中删除一个元素

时间:2019-03-08 21:38:03

标签: java list

我有一个名为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上做到了相等。 有更好的方法吗?还是对的?

0 个答案:

没有答案