java - 计算数组中的元素
问题描述
我正在尝试计算对象数组中的一个元素。
long number = Stream.of(jobTitle).count();
System.out.println("There are " + number + " employees.");
发生的情况是,它将打印出与具有相同职位的员工一样多的消息。然而“数字”始终保持为 1。
任何指导将不胜感激。
解决方案
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)...
推荐阅读
- javascript - 从views.py 获取JSON 格式的当前登录用户
- tensorflow - 优化 LSTM 网络的超参数
- json - 如何从 Angular11 中的 JSON 文件中读取值?
- nginx - nginx vhost子域坏网关
- amazon-web-services - 升级到 iOS14.5 (AWS Amplify iOS) 后 Amplify.Auth.getCurrentUser() 始终为零
- math.net - 是否可以解析 min 和 max 函数?
- sql - 如何以 YYYY-MM-DD 格式提取缺少日期的单元格计数?
- swift - Navigation Link - 通过 NavigationLink 和列表将特定的数组元素传递给新视图
- laravel - Laravel livewire 附加后看不到渲染更新
- gradle - 如何正确导入 Kotlin Multiplatform 项目(并且仅在构建时运行必要的任务)