循环遍历 Arraylist 并显示满足条件的对象 Java

时间:2021-02-12 12:55:13

标签: java arraylist

我将某些对象存储在 ArrayList 中。每个对象都有 5 个变量(两个字符串、两个整数和一个双精度)。

我尝试编写的方法将要求用户输入一个值(双精度值)。然后它将显示 ArrayList 中的所有对象,其双精度等于或大于用户输入的双精度。

我一直在尝试使用 for: each 循环,但我不知道如何向它添加任何条件以便获得我想要的结果。

关于如何对这样的 ArrayList 进行排序的任何提示都会非常好,我真的被困住了。 arrayList 被称为 listOfthings 并包含 String nam、String bread、int alt、int wegtt 和 double townLength(这是我希望它用作条件的值)这是我迄今为止的代码:

public void sortmogs() {
        System.out.println("Smallest thing to display?>");
        listTownLength = Input.readInt();
        
        for (Mog mog : listOftowns) {
            if (dog.getTownLength() >= listTownLength) {
            System.out.println(listOftowns);
               }
          }
}

但是,如果我将两个城镇添加到列表中,城镇长度分别为 2.5 和 5,然后添加用户输入 3,它会显示整个 arrayList ,因为其中一个 pog 满足条件(我想)

2 个答案:

答案 0 :(得分:0)

当您的 if 条件满足时,您将发出整个列表:

if (dog.getTownLength() >= listTownLength) {
  System.out.println(listOftowns);
}

相反,发出满足条件的元素:

if (dog.getTownLength() >= listTownLength) {
  System.out.println(dog);
}

答案 1 :(得分:-1)

您可以在这种情况下使用过滤器:

listOfDogs.stream()
.filter(dog -> dog.tailLength >= listTailLength)
.forEach(System.out::println);

如果没有,您始终可以在现有的 for 循环中添加 if 条件。