首页 > 解决方案 > 计算数组中的元素

问题描述

我正在尝试计算对象数组中的一个元素。

              long number = Stream.of(jobTitle).count();
              System.out.println("There are " + number + " employees.");

发生的情况是,它将打印出与具有相同职位的员工一样多的消息。然而“数字”始终保持为 1。

任何指导将不胜感激。

标签: java

解决方案


long number = Stream.of(jobTitle).count();

计算包含一个元素的中的元素。

毫不奇怪,此操作总是以完全相同的结果结束。

您的代码相当于:

List<Whatever> titels = new ArrayList<>();
titels.put(oneEntry);
... print titels.size()

长话短说:这种说法是荒谬的。你的意思可能是:

if (arbetstitel.equalsIgnoreCase(jobCount)){
  g++;

或类似的东西。当然g对于计数器来说是一个相当糟糕的名字。

但这里真正的答案是:退后一步。想想您打算解决什么问题,以及您需要查看哪些要素。您在此处显示的代码根本没有(太大)意义。我不能告诉你如何解决它,因为如前所述:目前尚不清楚你在这里试图实现什么。

一种流畅的计数方式:

long usersWithMatchingTitle = Arrays.stream(employees).filter(e -> e.getJobTitle().equalsIgnoreCase(jobTitleFromUser)).count();

含义:您可以将整个数组转换为流,然后过滤/计数任何您想要的,而不是手动迭代您的数组。

请注意:您的代码似乎只关心该数组中的前 30 个元素。如果这真的是你想要的,你将需要...stream(employees).limit(30)...


推荐阅读