ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java新特性扩展之集合操作

2022-03-04 23:33:28  阅读:237  来源: 互联网

标签:Java list 扩展 userList add user 集合 new User


java8的新特性使用起来非常的方便,详情参考Java8新特性

1.获取list集合中对象的某个属性值

1)需求:现有一个包含用户对象的集合,想只获取这些用户的姓名组成一个集合,如何去做?

2)演示

用户对象如下:

@Data
public class User {
    private Integer id;
    private  String name;
    private String phone;
}

列表如下(演示数据):

List<User> userList = new ArrayList<>();
for (int i = 0; i < 5; i++) {
   User user = new User();
   user.setId(i + 1);
   user.setName("张" + (i + 1) + "方");
   userList.add(user);
}

第一种方式:遍历用户对象的集合进行获取

List<String> nameList = new ArrayList<>();
userList.stream().forEach(user -> nameList.add(user.getName()));

第二种方式:使用流方式提前数据(推荐)

List<String> nameList = userList.stream().map(User::getName).collect(Collectors.toList());

2.对list集合元素过滤取赋值

1)需求:现有一个包含行政区对象的集合,根据父级id获取所有行政区的父级编码,如何去做?

2)演示

用户对象如下:

列表如下(演示数据):

List<AreaCode> list = new ArrayList<>();
list.add(new AreaCode(1, "湖北省", "101", 0, null));
list.add(new AreaCode(2, "武汉市", "10101", 1, null));
list.add(new AreaCode(3, "黄冈市", "10102", 1, null));
list.add(new AreaCode(4, "洪山区", "1010101", 2, null));
list.add(new AreaCode(5, "江夏区", "1010102", 2, null));
list.add(new AreaCode(6, "江岸区", "1010103", 2, null));
list.add(new AreaCode(6, "阳新县", "1010201", 3, null));

使用get()过滤符合条件的元素

list.stream().forEach(l -> {
   String code = "0";
   if (l.getParentId() != 0) {
      AreaCode areaCode = list.stream().filter(s -> s.getId().equals(l.getParentId())).findAny().get();
      code = areaCode.getCode();
   }
   l.setParentCode(code);
});

先对整个集合进行遍历,顶级元素除外,过滤出集合中id是当前元素父Id的元素,将其编码赋值给当前元素的对应属性。看起来有些绕,但对于数据的过滤是非常方便的。

3.判断list集合对象的字段是否存在某个值

1)需求:现有一个用户对象的集合,判断其中是否包含姓名为张三的用户,如何去做?

2)演示

用户对象如下:

@Data
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private Integer id;
    private String name;
    private String phone;
}

列表如下(演示数据):

List<User> userList = new ArrayList<>();
userList.add(new User(1, "张三丰", "15645854585"));
userList.add(new User(2, "张三", "15645857858"));
userList.add(new User(3, "李四", "15945854566"));
userList.add(new User(4, "王五", "15755554585"));
userList.add(new User(5, "张三", "15852254585"));

使用isPresent()进行判断

boolean exist1 = userList.stream().filter(user -> "张三".equals(user.getName())).findAny().isPresent();

其返回boolean类型,包含时返回true,不包含时返回false。

当然可以使用get()方法获取此元素的值,其返回的值是第一个符合条件的元素:

User user = userList.stream().filter(user -> "张三".equals(user.getName())).findAny().get();

这里的user内容就是集合元素中的第2个元素(id为2的用户信息)。

标签:Java,list,扩展,userList,add,user,集合,new,User
来源: https://www.cnblogs.com/zys2019/p/15966519.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有