【问题标题】:Count the total number of item elements contain in all the sublist of a list without using a loop [closed]在不使用循环的情况下计算列表的所有子列表中包含的项目元素总数[关闭]
【发布时间】:2022-12-11 17:26:07
【问题描述】:

我有一个子列表“l”的大列表“L”(全部包含在“L”中),其中每个子列表“l”都包含一定数量的项目。
我想得到的是存储在“L”的所有子列表中但不使用循环的项目总数。

也许我的问题会更清楚地表述如下。
带有“L”的大列表由所有小子列表“li”组成。 不使用循环我想知道的是:

这里有一个例子:
我有一个大列表Farm,它由不同的子列表组成,即农场的动物。

Farm  
 Cow  
 Horse  
 Chicken  
 ...

列表Farm 的每个元素也是一个列表。例如,子列表Cow 是农场所有奶牛的列表(它们的名字、体重、年龄……)。
例如,Cow 列表如下所示:

Cow
 Marguerite: 4 years - 200 kg
 Toto: 2 years - 150 kg
 Biggy: 5 years - 500 kg
 ...

我想知道该农场中的动物总数(也就是“大列表”的所有子列表中包含的元素总数),但不使用循环。

谁能帮帮我。我试图通过使用流来做到这一点,但直到现在我还没有成功。

【问题讨论】:

  • 您可以在将项目添加到子列表时对其进行计数。
  • 流仍然打开),就像一个循环
  • 你试过什么Stream解决方案?提示:了解flatMap
  • 不幸的是,我不知道没有循环的答案,但我认为人们投票的原因是因为你的英语似乎不太好,有些句子非常混乱
  • @X0-user-0X - 只需使用递归方法,例如:public int get2DListElementsCount(List<List<String>> my2DList, int index, int sum) { if (index > (my2DList.size() - 1)) { return 0; } sum += my2DList.get(index).size(); index++; if (index < my2DList.size()) { sum = get2DListElementsCount(my2DList, index, sum); } return sum; }

标签: java list java-stream


【解决方案1】:

我终于找到了适合我的答案。

首先,在您的每个动物类中,例如 Cow 类添加一个变量来计算列表中实际的奶牛数量。
添加到同一个类 Cow 后,一个公共的 getter 函数就可以访问这个号码了。此 getter 应该有一个通用名称,例如 getAnimalSpecificClassNbr,以便您可以在流中调用它。

public int countTotNbrOfAnimals() {
        // create a list that contains only the Nbr of specific animal in each for each animal
        List <Integer> cpylistOflist = this.AnimalList.stream()
                .map(u -> u.getAnimalSpecificClassNbr())
                .collect(Collectors.toList()); 
        return (int) cpylistOflist.stream()
                .mapToDouble(a -> a)
                .sum();
    }

【讨论】:

    猜你喜欢
    • 2023-01-22
    • 2018-02-04
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    相关资源
    最近更新 更多