由对象集合创建各种映射
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class UserIdAndDepartId {
/**
* 用户ID
*/
private String userId;
/**
* 部门ID
*/
private String departId;
}
实例1 Map<String,List>
public static void main(String[] args) {
List<UserIdAndDepartId> userIdAndDepartIdList = new ArrayList<>(3);
userIdAndDepartIdList.add(new UserIdAndDepartId("0000001", "abc"));
userIdAndDepartIdList.add(new UserIdAndDepartId("0000002", "abc"));
userIdAndDepartIdList.add(new UserIdAndDepartId("0000003", "abc"));
Map<String, List<UserIdAndDepartId>> departId2UserIdSet;
departId2UserIdSet = userIdAndDepartIdList
.stream()
.collect(Collectors.groupingBy( UserIdAndDepartId::getDepartId));
}
实例2 Map<String,Set>
public static void main(String[] args) {
List<UserIdAndDepartId> userIdAndDepartIdList = new ArrayList<>(3);
userIdAndDepartIdList.add(new UserIdAndDepartId("0000001", "abc"));
userIdAndDepartIdList.add(new UserIdAndDepartId("0000002", "abc"));
userIdAndDepartIdList.add(new UserIdAndDepartId("0000003", "abc"));
Map<String, Set<UserIdAndDepartId>> departId2UserIdSet;
departId2UserIdSet = userIdAndDepartIdList
.stream()
.collect(
Collectors.groupingBy( //分组
UserIdAndDepartId::getDepartId, //分组依据
Collectors.toSet() //整理
)
);
}
实例3 Map<String,Set>
public static void main(String[] args) {
List<UserIdAndDepartId> userIdAndDepartIdList = new ArrayList<>(3);
userIdAndDepartIdList.add(new UserIdAndDepartId("0000001", "abc"));
userIdAndDepartIdList.add(new UserIdAndDepartId("0000002", "abc"));
userIdAndDepartIdList.add(new UserIdAndDepartId("0000003", "abc"));
Map<String, Set<String>> departId2UserIdSet;
departId2UserIdSet = userIdAndDepartIdList
.stream()
.collect(
Collectors.groupingBy( //对数据进行分组
UserIdAndDepartId::getDepartId, //以部门ID为分组依据
Collectors.mapping( //处理分组数据
UserIdAndDepartId::getUserId, //抽取
Collectors.toSet() //整理
)
)
);
}