代码之家  ›  专栏  ›  技术社区  ›  Bautista Querejeta

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

  •  -1
  • Bautista Querejeta  · 技术社区  · 8 年前

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

    我需要做的是在Farmacy类中创建一个方法,该方法需要2个参数(一个有过敏症状的人和一种药物)。该方法必须遍历药物列表,并检查该药物中是否有任何过敏原与人的过敏特征相匹配。

    这就是我所面临的问题:我需要匹配通过参数发送的药物和listMedicine中的药物,这就是我所需要的(可能是aMedicine.getName()。等于(oneMedicine.getName()) 但我试过了,但没用。 然后,我可以对该方法的下一部分应用类似的过程。

    public void checkAllergies(Person onePerson, Medicine aMedicine){
    
        for(Medicine oneMedicine : listMedicine){
    
    
    
        }
    }
    

    Thx时间:)

    btw Im使用IntelliJ

    1 回复  |  直到 8 年前
        1
  •  0
  •   Basti    8 年前

    这就是你应该如何过滤 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()

    只需组合一个表示药物/精料过滤器的谓词,并检查是否有结果。