计数数组中的元素

时间:2019-08-09 09:08:02

标签: java

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

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

发生的事情是,它将打印出消息的次数是具有相同职务的许多员工的次数。但是“数字”始终保持为1。

任何指导将不胜感激。

2 个答案:

答案 0 :(得分:4)

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)...

答案 1 :(得分:0)

您需要更改命令流以定义适当的谓词过滤器选项。

Stream.of(employees).filter(e -> e.getJobTitle().equals(jobTitle)).count();