利用Java8新特性stream流给集合中的某个属性赋值

今天在编写一个返回对象VO时,需要做一些处理,返回对象VO如下:
CollectListVO

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
@ApiModel(value = "收藏列表")
public class CollectListVO {

    
    /**
     * 活动列表,协办单位
     */
    @ApiModelProperty(value = "活动:协办单位字符串")
    private String strSupportOrg;

    /**
     * 活动列表
     */
    @ApiModelProperty(value = "活动列表")
    private List<CollectActivityVO> activityVOList;
}

CollectActivityVO

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
@ApiModel(value = "收藏活动列表")
public class CollectActivityVO {

    /**
     * id
     */
    @ApiModelProperty(value = "ID")
    private String id;

    /**
     * 名称
     */
    @ApiModelProperty(value = "名称")
    private String name;

    /**
     * 发布单位
     */
    @ApiModelProperty(value = "发布单位")
    private String publishOrg;

    /**
     * 协办单位
     */
    @ApiModelProperty(value = "协办单位")
    private List<String> supportOrg;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 封面图
     */
    @ApiModelProperty(value="封面图")
    private String coverImg;

    /** 开始时间 */
    @ApiModelProperty(value = "开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime beginDate;

    /** 结束日期 */
    @ApiModelProperty(value = "结束日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endDate;

    /**
     * 收藏状态
     */
    @ApiModelProperty(value="收藏状态:0正常,1取消收藏")
    private String collectStatus;
}

因为我们的协办单位在数据库中是利用(,)逗号进行分割的,但是我们返回给前端的时候,需要转换成list,所以需要对其进行分割并且将解决赋值给CollectActivityVO中的supportOrg,我们可以利用stream流来操作,业务代码如下:

List<CollectListVO> collectListVOS =  collectMapper.getListActivity();
            for (CollectListVO cList: collectListVOS) {
                cList.getActivityVOList().stream().forEach(e->{
                    e.setSupportOrg(Arrays.asList(cList.getStrSupportOrg().split(",")));
                });
                cList.setStrSupportOrg(null);
            }
           return collectListVOS; 

根据以上操作便能成功将分割后的对象保存到CollectActivityVO中的supportOrg中。
在这里插入图片描述

### 回答1: Java 的 List 是一种接口,它继承于 Collection 接口。List 接口的元素是有序的,可以重复的。Java 有许多 List 的实现类,如 ArrayList、LinkedList 等。 在 Java ,要给 List 的元素赋值,可以使用 List 的 add 方法来添加元素,也可以使用 set 方法来修改 List 指定位置的元素的值。 例如: ``` List<String> list = new ArrayList<>(); // 添加元素 list.add("a"); list.add("b"); // 修改元素 list.set(0, "c"); ``` 如果要根据属性赋值,可以通过遍历 List 的元素,然后根据属性值来判断是否需要赋值。 例如: ``` List<Person> list = new ArrayList<>(); list.add(new Person("Alice", 20)); list.add(new Person("Bob", 30)); list.add(new Person("Charlie", 40)); for (Person person : list) { if (person.getName().equals("Alice")) { person.setAge(25); } } ``` 上面的代码,我们遍历了 List 的所有 Person 对象,如果这个 Person 的名字是 Alice,就将他的年龄修改为 25。 ### 回答2: 在Java,可以根据属性值来赋值给List。我们可以通过自定义的比较器或者使用Lambda表达式来实现根据属性赋值。 首先,如果我们有一个类Person,其包含属性name和age。我们想要根据name属性来为List赋值。我们可以先创建一个比较器Comparator来实现根据name属性的比较。代码如下: ``` class NameComparator implements Comparator<Person> { public int compare(Person p1, Person p2) { return p1.getName().compareTo(p2.getName()); } } ``` 然后,我们可以使用Collections.sort方法来对List进行排序,根据比较器的规则来进行比较和排序。代码如下: ``` List<Person> personList = new ArrayList<>(); personList.add(new Person("Alice", 20)); personList.add(new Person("Bob", 22)); personList.add(new Person("Charlie", 25)); Collections.sort(personList, new NameComparator()); ``` 这样,personList就按照name属性的字母顺序进行了排序。 另一种方法是使用Lambda表达式来实现根据属性赋值。可以使用Stream API的sorted方法来对List进行排序。代码如下: ``` List<Person> personList = new ArrayList<>(); personList.add(new Person("Alice", 20)); personList.add(new Person("Bob", 22)); personList.add(new Person("Charlie", 25)); personList = personList.stream() .sorted((p1, p2) -> p1.getName().compareTo(p2.getName())) .collect(Collectors.toList()); ``` 这样,personList也按照name属性的字母顺序进行了排序。 无论是使用自定义比较器还是使用Lambda表达式,都可以根据属性来为List赋值,使其按照属性值的顺序排列。 ### 回答3: Java的List是一种集合类型,可以用于存储一组对象。根据属性赋值的意思可以理解为需要根据对象的某个属性来给List的元素赋值。 首先,我们需要定义一个类,该类包含属性和对应的setter和getter方法,用于存储我们要赋值的对象。 接着,我们可以创建一个List对象,用于存储我们的对象。比如: List<类名> list = new ArrayList<>(); 然后,我们可以通过循环遍历的方式,给我们的对象赋值。可以使用if语句或者switch语句通过判断属性值来决定赋值的内容。比如: for (类名 对象: list) { if (对象.get属性().equals("某个值")) { 对象.set属性("需要赋的值"); } } 最后,我们可以通过遍历List的方式,输出每个对象的属性值,来验证赋值是否成功。比如: for (类名 对象: list) { System.out.println(对象.get属性()); } 这样,我们就可以根据属性赋值给List的对象了。在实际开发,我们可以根据具体的业务需求来进行相应的操作,使得代码更加灵活和实用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

誓言唯美RQL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值