我想过滤map列表的元素,然后在Java8+中返回map
public class Test {
List<Employee> list1 = new ArrayList<>();
list1.add(emp1); // emp1's filterEmployee return true
list1.add(emp2); // emp2's filterEmployee return true
list1.add(emp3); // emp3's filterEmployee return false
List<Employee> list2 = new ArrayList<>();
list2.add(emp4); // emp4's filterEmployee return false
list2.add(emp5); // emp5's filterEmployee return true
list2.add(emp6); // emp6's filterEmployee return true
map.put("Sales", list1);
map.put("Tech", list2);
public Map<Department, List<Employee>> getEmployeeByDepartment( Map<Department, List<Employee>> map)
{
return map1;
}
static boolean filterEmployee(Employee employee)
{
check employee something and filter out based on some critiea
and return true or false based on that
}
}
在getEmployeeByDepartment方法中,对于映射中的每个条目,使用下面的filterEmployee方法在映射值的列表中筛选employee,返回的map1将包含映射,以便
<“tech”,list2.add(emp6)>//emp6的filterEmployee返回true
我在下面试过这个和那个,但没有成功
Map<Department, List<Employee>> map2 = map.entrySet().stream().filter(entry -> entry.getValue().stream().filter(Test::filterEmployee).collect(Collectors.toMap((Department)entry.getKey(), (List<Employee>)entry.getValue())));
类似这样的事情应该会起作用:
private static boolean shouldKeep(Employee employee) { ... }
// ...
Map<Department, List<Employee>> employees = // a map you've built
// ...
Map<Department, List<Employee>> filteredMap =
employees.entrySet().stream().collect(
Collectors.toMap(
e -> e.getKey(),
e -> e.getValue().stream()
.filter(employee -> shouldKeep(employee))
.collect(Collectors.toList())));
如何使用java8流过滤列表,如果找到的元素是过滤列表中唯一的元素,则返回该元素,否则(如果有更多的元素满足条件,或者没有满足条件的结果)返回例如 我需要这样的东西: 但我想知道我是否可以在一个单一的流中做到这一点? 有单一的流解决方案吗?
如何过滤<代码>地图 仅当列表中的任何员工具有字段值性别=“M”时,我才必须过滤。 输入:
有一个简单的: 以及任务对象的列表。如何通过使用获得每个作为的列表。我试过这个: 但它返回
问题内容: 我想从列表中筛选元素,并使用lambda遍历每个元素的元素。例如,给定列表: 假设我只想保留列表总和大于N的元素。我尝试编写: 但我得到了错误: 在将每个元素的值分配给x,y和z时如何进行迭代?像zip之类的东西,但列表很长。 谢谢, ps我知道我可以这样写:filter(lambda x:sum(x)…,a)但这不是重点,想象一下这些不是数字而是任意元素,我想将它们的值分配给变量名。
这工作正常: 我得到了一个非常好的JSON数组和对象。 现在的问题是,我喜欢将我的数据作为有效载荷放入响应中,以便能够设置标头和状态,或者返回一个错误对象作为有效载荷。但是不管用。 Mai 16,2012 7:00:35 PMorg.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor写响应错误消息警告:未找到响应类ArrayList的消息正文编写器。
我当前正在过滤一个流,但是如果过滤器没有返回任何匹配项,我想返回一个默认值。这是在附加流的链中,所以我使用它来避免在一个步骤没有任何结果时链停止。 目前,我正在通过将筛选结果收集到一个列表中来伪造它,如果列表为空,请创建新的默认列表并将其作为流返回。如果列表不为空,则将结果转换回流以将其传递回。 有什么更流的方式来实现这一点,而不需要去列表和返回流?