通过参数在列表中查找对象

时间:2018-03-29 19:20:52

标签: java object foreach parameters

我正在练习使用ArrayList,所以我得到了这个练习,我需要创建一个药物farmacy,farmacy有一个药物清单,这些药物每个包含两种药物,每种药物都有一种布尔过敏原。

我需要做的是在Farmacy课程中创建一个方法,该方法需要2个参数(一个有过敏和药物的人),该方法必须通过药物清单并检查是否有任何过敏原在那种符合人类过敏性状的药物中。

这是我的问题:我需要匹配通过参数发送的药物和listMedicine中的药物,这就是我所需要的,(可能与aMedicine.getName()。equals(oneMedicine.getName) ())) 但我尝试这样做,它不起作用。 然后,我可以将相似的过程应用于方法的下一部分。

public void checkAllergies(Person onePerson, Medicine aMedicine){

    for(Medicine oneMedicine : listMedicine){



    }
}

当时的时间:)

btw我使用IntelliJ

1 个答案:

答案 0 :(得分:0)

这是您应该如何过滤Collections

List<Person> persons = new ArrayList<>();

/* Java 8+ using streams and predicate (lambda expression)*/
List<Person> personsOlderThan10 = persons.stream().filter(p -> p.age > 10).collect(Collectors.toList());

/* Java 7- using Predicates*/
List<Person> personNamedJohn = new ArrayList<>(persons);
personNamedJohn.removeIf(new Predicate<Person>() {

    @Override
    public boolean test(final Person person) {
        if (person.getFirstName().toLowerCase().equals("john")) {
            return false;
        }
        return true;
    }
});

要确定您的过滤器是否有任何结果,您只需检查Collection.isEmpty()

即可

只需将代表药物/过敏的过滤器的谓词放在一起,并检查是否有结果。