java中通过stream流把list按照list中的mobile进行分组
时间: 2023-03-21 09:03:16 浏览: 107
可以使用Java 8中引入的Stream API中的`Collectors.groupingBy()`方法来按照List中对象的mobile属性进行分组。具体代码如下:
假设有一个名为`Person`的类,它有一个`mobile`属性,表示电话号码。现在有一个`List<Person>`类型的列表,需要按照`mobile`属性进行分组,代码如下:
```java
Map<String, List<Person>> personMap = personList.stream().collect(Collectors.groupingBy(Person::getMobile));
```
上述代码中,`personList`是一个`List<Person>`类型的列表,`Person::getMobile`表示按照`mobile`属性进行分组,`personMap`是一个`Map<String, List<Person>>`类型的结果,其中`String`表示按照`mobile`属性分组后的键值,`List<Person>`表示对应的值,即按照`mobile`属性分组后的`Person`对象列表。
相关问题
stream maplist 取值
stream maplist 取值是指通过使用流(Stream)和map方法,从一个集合中取出特定属性的值。可以通过以下方式来实现:
1. 使用map方法和实体类的getter方法来提取指定属性的值。例如,你可以使用以下代码从一个List<UserInfo>中提取所有的userName属性值:
```
List<String> userNameList = uList.stream()
.map(UserInfo::getUserName)
.collect(Collectors.toList());
```
2. 使用map方法和Lambda表达式来提取指定属性的值。例如,你可以使用以下代码从一个List<UserInfo>中提取所有的mobile属性值:
```
List<String> mobileList = uList.stream()
.map(u -> u.getMobile())
.collect(Collectors.toList());
```
3. 使用map方法和字符串拼接来提取多个属性拼接后的字符串。例如,你可以使用以下代码从一个List<UserInfo>中提取每个实体的id和userName属性,并将它们拼接成一个字符串:
```
List<String> idNameList = uList.stream()
.map(u -> u.getId() + "-" + u.getUserName())
.collect(Collectors.toList());
```
总之,通过使用流(Stream)的map方法,我们可以方便地从集合中提取特定属性的值并将它们收集到一个新的集合中。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [Java8 stream处理List,Map总结](https://blog.csdn.net/y19910825/article/details/128107210)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
优化这段代码 private GroupMemberResp setmenberResp(CustomerGroupMember member){ GroupMemberResp resp=new GroupMemberResp(); BeanUtil.copyProperties(member,resp); List<CustomerGroupMember> memberSize=iCustomerGroupMemberService.queryGroupMembersinfo(member.getUserId()); resp.setgroupcount(memberSize.size()); List<String> chatIdList=memberSize.stream().map(t->t.getChatId()).collect(Collectors.toList()); List<CustomerGroup> groupList=getGroupListByChatId(chatIdList); List<String> groupNameList=groupList.stream().map(t->t.getChatIName()).collect(Collectors.toList()); resp.setgroupName(groupNameList.toString().replace(“,”,”|”)); if(member.getMemberType()==1){ EmployeeOrgConfig orgConfig=employeeOrgConfigService.getEmployeeOrgConfig(member.getUserId()); if(orgConfig!=null){ resp.setMobile(orgConfig.getMobile()); resp.setIdCard(orgConfig.getIdCard()); } }else{ Customer customer=customerService.getCustomer(member.getUserId()); if(customer!=null){ resp.setMobile(customer.getMobile()); resp.setIdCard(customer.getIdCard());. resp.setStatus(customer.getStatus()); } } Return resp; }
优化后的代码如下:
private GroupMemberResp setMemberResp(CustomerGroupMember member) {
GroupMemberResp resp = new GroupMemberResp();
BeanUtil.copyProperties(member, resp);
List<CustomerGroupMember> memberSize = iCustomerGroupMemberService.queryGroupMembersinfo(member.getUserId());
resp.setGroupCount(memberSize.size());
List<String> chatIdList = memberSize.stream().map(CustomerGroupMember::getChatId).collect(Collectors.toList());
List<CustomerGroup> groupList = getGroupListByChatId(chatIdList);
List<String> groupNameList = groupList.stream().map(CustomerGroup::getChatIName).collect(Collectors.toList());
resp.setGroupName(String.join("|", groupNameList));
if (member.getMemberType() == 1) {
EmployeeOrgConfig orgConfig = employeeOrgConfigService.getEmployeeOrgConfig(member.getUserId());
if (orgConfig != null) {
resp.setMobile(orgConfig.getMobile());
resp.setIdCard(orgConfig.getIdCard());
}
} else {
Customer customer = customerService.getCustomer(member.getUserId());
if (customer != null) {
resp.setMobile(customer.getMobile());
resp.setIdCard(customer.getIdCard());
resp.setStatus(customer.getStatus());
}
}
return resp;
}
阅读全文