- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将列表转换为 map 。
列表将类似于
List<Employee> employeesList = new ArrayList<>();
我希望将其转换为 map ,例如,
Map<String, List<RetiredEmployee>> empsMap = new HashMap<>();
这里,键是员工姓名,对象是包含员工的 RetiredEmployee。
class RetiredEmployee {
private final Employee employee;
private final Optional<LocalDateTime> empJoinTime;
RetiredEmployee(final Employee employee) {
this.employee = employee;
this.empJoinTime = getEmpJoinTime(employee);
}
}
以下代码适用于,
List<Employee> to Map<String, List<Employee>>
employeesList.stream().collect(Collectors.groupingBy(Employee::getName));
但不确定,如何将此员工转换为此分组内的新退休员工(员工)或进一步流式传输。
此外,我需要列表中最后一个员工 ID。是否也可以将其包含在流媒体中?
此外,希望对入职时间已知或存在的员工应用过滤器。
谢谢
最佳答案
我可以想到两个选择。一种是使用Collectors.mapping()
来转换值:
employeesList.stream()
.collect(Collectors.groupingBy(Employee::getName,
Collectors.mapping(RetiredEmployee::new, Collectors.toList())))
使用 Java 9,您可以输入 filtering()
收集器排除没有加入时间的员工。
或者您可以将流映射到RetiredEmployee
,然后间接提取名称。这使得添加加入时间过滤器变得更加容易:
employeesList.stream()
.map(RetiredEmployee::new)
.filter(e -> e.getEmpJoinTime().isPresent())
.collect(Collectors.groupingBy(e -> e.getEmployee().getName()))
至于从列表中获取最后一个员工,我没有看到困难,或者它与流有何关系。只需使用employeesList.get(employeesList.size() - 1)
。
关于Java 8 流式重构 - List<ObjA> 到 Map<String, List<ObjB>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47212013/
我想知道 CLR 类型是否会返回以下不同的结果: Object.Equals(objA, objB) objA.Equals(objB) (objA == objB) 我确实意识到,在 CLR 之外,
我们可以使用 ipython 显示引擎为 numpy.polynomial.polynomial 注册自定义类型,如下所示 ip = get_ipython() foramtter = ip.disp
我在列表中找到了这个关于 C++ 的练习,但无法解决它。这里是:假设我们有以下指令: ObjA = ObjB; 其中ObjA是ClassA的一个对象,ObjB是ClassB的一个对象,这样才能正常运行
让我解释一下: package a.b.c.d; public interface ObjA extends ObjFirst ... 然后 package e.f.g.h; public inter
在使用 Reflector 反汇编 .Net 源代码时,我发现了对象类中的 Equals 实现,它指的是 bool InternalEquals(object objA, object objB);
尝试在删除操作中从对象 A 中删除 B 的 ICollection 但出现此错误: “错误DELETE语句与REFERENCE约束冲突” 有道理,但我只是不知道如何先删除包含的 B 的 ICollec
我正在尝试将列表转换为 map 。 列表将类似于 List employeesList = new ArrayList<>(); 我希望将其转换为 map ,例如, Map> empsMap = ne
在 Chrome 开发工具的 AngularJS 选项卡中(我使用的是 AngularJS Batarang(稳定版))。我有以下几行,描述了哪些 watch 表达式的求值时间最长(如果一个表达式被多
我是一名优秀的程序员,十分优秀!