gpt4 book ai didi

java - 仅使用 java 8 lambda 将 List 转换为 List>
转载 作者:塔克拉玛干 更新时间:2023-11-01 22:08:02 24 4
gpt4 key购买 nike

我有 List<User>其中 User是一个具有变量 id,name,date 的类.我只想创建一个List<List<String>>这样它只包含第一个列表中的名称和日期。我的代码

import java.util.*;
import java.util.stream.*;
public class User
{
int id;
String name;
Date date;

public User(int id,String name,Date date){
this.id=id;
this.name=name;
this.date=date;

}

public static void main(String[] args)
{
User one=new User(1,"a",new Date());
User two=new User(2,"b",new Date());
User three=new User(3,"c",new Date());

List<User> userList=Arrays.asList(one,two,three);

System.out.println(userList);

List<List<String>> stringList = IntStream.range(0,userList.size())
.maptoObj(i -> Array.asList(userList.get(i).name,userList.get(i).date))
.collect(toList);
System.out.print(stringList);

}
}

当我使用 collect() 时,我似乎无法弄清楚如何实现它它说在收集时找不到符号。有什么办法可以得到 List<List<String>>包含来自 List<User> 的名称和日期列表

我也试过

List<List<String>> stringList = IntStream.range(0,userList.size())
.map(i -> Arrays.asList(userList.get(i).name,userList.get(i).date.toString()))
.collect(Collectors.toList());

但它给了我

 error: 
no instance(s) of type variable(s) T exist so that List<T> conforms to int
where T is a type-variable:
T extends Object declared in method <T>asList(T...)incompatible types: bad return type in lambda expression
.map(i -> Arrays.asList(userList.get(i).name,userList.get(i).date.toString()))
^
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
1 error

谢谢

最佳答案

您不需要使用 IntStream

List<List<String>> output = 
userList.stream()
.map (u -> Arrays.asList (u.name,u.date.toString()))
.collect (Collectors.toList());

编辑:

如果您希望继续使用 IntStream 解决方案:

List<List<String>> stringList = 
IntStream.range(0,userList.size())
.mapToObj(i -> Arrays.asList(userList.get(i).name,userList.get(i).date.toString()))
.collect(Collectors.toList());

关于java - 仅使用 java 8 lambda 将 List<Object> 转换为 List<List<String>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33276313/

24 4 0