如何遍历?因为两个数组的长度一致(下标对齐),所以遍历任意一个数组,用其当前下标即可,而由于在stream中获取list下标有点复杂,故采用IntStream.range的方法。
如何组合成新的User对象? mapToObj方法可以做到这一点。
如何收集User对象?lambda中是有收集器的。Collectors.toList()
package lambda;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
/**
-
@Author: Beer Bear
-
@Description: 来自思否
-
@Date: 2021/10/8 8:12
*/
public class NameAndClassFromSegmentfault {
class User{
private String oneClass;
private Integer user;public User(String oneClass,Integer user){ this.oneClass = oneClass; this.user = user; } @Override public String toString() { return "User{" + "oneClass='" + oneClass + '\'' + ", user=" + user + '}'; }
}
/**- create by: Beer Bear
- description: 不放在main种是因为main是静态的 lambda无法从静态上下文中引用非静态方法
- create time: 2021/10/8 8:28
*/
public List func() {
List names = Arrays.asList(1,2,3,4);
List classes = Arrays.asList(“A”,“B”,“C”,“D”);
return IntStream.range(0,names.size()).mapToObj(x -> new User(classes.get(x), names.get(x))).collect(Collectors.toList());
}
public static void main(String[] args) {
NameAndClassFromSegmentfault nameAndClassFromSegmentfault = new NameAndClassFromSegmentfault();
System.out.println(nameAndClassFromSegmentfault.func());
}
}