我有一个员工类,有薪水和部门,还有一份员工名单。
static class Employee {
private String department;
private int salary;
//getters
getDeparment()
getSalary()
}
List<Employee>
我需要找到至少有30名员工支付至少100美元工资的部门数量。
到目前为止,我已经得到了每个部门的员工数量。但是我不知道如何应用过滤器。
HashMap<String, Long> collect = employees
.stream()
.collect(Collectors.groupingBy(Employee::getDepartment, HashMap::new, Collectors.counting()));
任何帮助都将不胜感激。
HashMap<String, Long> collect = employees
.stream()
.filter(e-> e.getSalary() >= 100 && e.getDeparment().getEmployees().size >= 30)
我不知道你的要点,但你明白了。最后把它收集到地图上
下面的应该可以做到这一点:
Set<String> departments = employees.stream()
.filter(employee -> employee.getSalary() >= 100)
.collect(Collectors.groupingBy(Employee::getDepartment, HashMap::new, Collectors.counting()))
.entrySet().stream().filter(entry -> entry.getValue() >= 30)
.map(Map.Entry::getKey)
.collect(Collectors.toSet());
首先筛选出工资
低于100的员工。然后按部门对员工进行分组,并计算部门中员工的数量。最后,您需要筛选出所有员工少于30人的部门,并将最终结果映射到
集合
。
问题内容: 您如何先分组然后使用Java流应用过滤? 示例 :考虑此类:我想按部门分组,列出薪水大于2000的雇员。 这就是我可以做到的 输出量 由于B部门中没有雇员的薪水高于2000。因此B部门没有密钥: 但是实际上,我想使用空列表作为密钥– 预期产量 我们应该怎么做? 问题答案: nullpointer的答案显示了直接的方法。如果您不能更新到Java 9,没问题,那么这个收集器就没有魔力。这是
我必须通过一个映射过滤对象集合,该映射包含对象字段名和字段值的键值对。我正在尝试按stream()应用所有过滤器。过滤器()。 对象实际上是JSON,因此映射包含其变量的名称以及它们必须包含的值,以便被接受,但出于简单的原因,并且由于与问题无关,我编写了一个简单的Testclass来模拟行为: 到目前为止我所尝试的: 我试着将地图的每个部分放在第一位,将集合的流放在第一位,但这两种解决方案都没有按
现在我有一个列表: 我想得到一个字符串列表,即从map中匹配键值的值,在' pick '列表中找到。所以,我期望得到结果{"f "," a"}。有没有办法用java stream api优雅地做到? 当有一个值时,我会这样做: 但是,当有一个键/选择列表要过滤时,就很难了。
问题内容: AngularJS可以做的有趣的事情之一是将过滤器应用于特定的数据绑定表达式,这是一种方便的方法,例如,应用区域性特定的货币或模型属性的日期格式。在范围上具有计算属性也很好。问题在于这些功能都不适用于双向数据绑定方案- 从作用域到视图仅单向数据绑定。在一个本来不错的图书馆中,这似乎是一个明显的遗漏-还是我错过了什么? 在KnockoutJS中,我可以创建一个读/写计算属性,该属性允许我
我有两个简单的POJOs: 然后我生成一些数据,我为父母添加100个孩子: 我的目标是移除所有10岁以下的儿童: 最后,我列出了十岁以上的孩子。但是我不想写一个单独的方法。 如何得到所有的父母与名单上的孩子十岁以上只使用单一流?
问题内容: 在ES中是否在查询之前应用了过滤器? 举例来说,我正在做一个非常缓慢的模糊搜索,但是我只是在很小的日期范围内进行。例如,您可以看下面的(PHP): 在尝试进行较慢的搜索之前,是否会应用过滤器? 逻辑将要求先运行筛选器,然后再运行查询,但是我想确定一下。 问题答案: 如果使用-query,则会在对文档计分之前应用过滤器。 通常,这会大大加快速度。但是,模糊查询将仍然使用输入来构建更大的查