从集合中取出某些属性组成新的集合的几种方法

31 篇文章 0 订阅

从集合中取出某些属性组成新的集合的几种方法

比如我们有一个装有学生类的集合,我们想获得所有学生的姓名组成的一个新的集合

1,准备工作

为了进行测试,首先,我们需要定义一个实体类

package com.me;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {

    private String name;
    private Integer age;

}
2,获取新集合的方法
2.1下面使用第一种方法获取,利用流的思想,用到了forEach方法
package com.me;
import org.junit.Test;
import java.util.ArrayList;

public class ListDemoOne {

    @Test
    public void test(){

        ArrayList<Student> list = new ArrayList<>();

        Student one = new Student("一", 1);
        Student two = new Student("二", 2);
        Student three = new Student("三", 3);

        list.add(one);
        list.add(two);
        list.add(three);

        ArrayList<String> nameList = new ArrayList<>();
        list.forEach(s -> nameList.add(s.getName()));

        System.out.println(nameList);
    }
}
2.2使用第二种方法获取,同样利用流的思想,不过这次使用的是map和collect方法
package com.me;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class ListDemoTwo {

    @Test
    public void test(){

        ArrayList<Student> list = new ArrayList<>();

        Student one = new Student("一", 1);
        Student two = new Student("二", 2);
        Student three = new Student("三", 3);

        list.add(one);
        list.add(two);
        list.add(three);
        List<String> nameList = list.stream().map(Student::getName).collect(Collectors.toList());
        
        System.out.println(nameList);
    }
}
2.3使用第三种方法获取,这次用的是Spring提供的工具类CollectionUtils下的transform方法
package com.me;
import org.junit.Test;
import org.springframework.cglib.core.CollectionUtils;
import java.util.ArrayList;
import java.util.List;

public class ListDemoThree {

    @Test
    public void test(){

        ArrayList<Student> list = new ArrayList<>();

        Student one = new Student("一", 1);
        Student two = new Student("二", 2);
        Student three = new Student("三", 3);

        list.add(one);
        list.add(two);
        list.add(three);
        //这里的参数s是Object类型,需要进行强转才能调用getName方法
        List<String> nameList = CollectionUtils.transform(list, s -> ((Student) s).getName());
        
        System.out.println(nameList);
        }
}
3,总结

这三种方法都可以达到我们想要的结果,但是第二种和第三种方法省去了我们new新集合对象的过程,更为方便一些。

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值