当前位置: 首页 > 知识库问答 >
问题:

java-将带有List变量的对象转换为对象列表

危寒
2023-03-14
public class Student {
  public String name;
  public String className; // In real code I'd have a second object for return to the end user
  public List<String> classes; // Can be zero
}
[
  {
    "name":"joe",
    "class":"science"
  },
  {
    "name":"joe",
    "class":"math"
  },
]
List<Student> students = getStudents();
List<Student> outputStudents = new ArrayList<>();
students.forEach(student -> {
  if(student.getClasses().size() > 0) {
    student.getClasses().forEach(clazz -> {
      outputStudents.add(new Student(student.getName(), clazz));
    });
  } else {
    outputStudents.add(student);
  }
});

共有1个答案

曹均
2023-03-14

是的,你应该可以做这样的事情:

Student student = ?
List<Student> output = 
    student
        .getClasses()
        .stream()
        .map(clazz -> new Student(student.getName, student.getClassName, clazz))
        .collect(Collectors.toList());

对一个学生来说。对于一群学生来说,情况要复杂一些:

(根据@nullpointer的评论进行了更新。谢谢!)

List<Student> listOfStudents = getStudents();
List<Student> outputStudents =
    listOfStudents
        .stream()
        .flatMap(student -> {
            List<String> classes = student.getClasses();
            if (classes.isEmpty()) return ImmutableList.of(student).stream();
            return classes.stream().map(clazz -> new Student(student.getName(), student.getClassName(), ImmutableList.of(clazz)));
        })
        .collect(Collectors.toList());
 类似资料:
  • 我有这个: 我想把这个(String类型的列表)直接投射到新的(类型)上,但不知道如何?

  • 例如:Date值为:“dateCollected”:fri Jul 07 00:00:00 IST 1989, 但它只服用星期五而不是整个日期。

  • 如何将单对象转换为简单列表对象? 我使用下面的代码:

  • 我有以下几门课: 我有一个a的列表,我想将其转换为具有以下逻辑的映射: 在一行流方法中做它的最好方法是什么? 谢谢Elad

  • 问题内容: 我正在将struts2用于Action,将jquery用于UI … 我想知道如何将Map对象转换为JSON对象并将其发送回UI, 现在可以在JSP页面中将其打印为普通的Java Map对象: 但我希望它是这样的: 我将如何实现这一目标…? 问题答案: 尝试Gson: 不过,我不建议将这种代码放入JSP。诸如此类的事情应该存在于Servlet或Action类之类的控制器中。 您还绝对不希

  • 问题内容: 我对服务进行了调用,并将响应存储在中。但是,我试图将其转换为类对象并得到错误。这是我的代码: 响应如下所示: 这是该类的样子: 但是我得到了错误: 我究竟做错了什么? 编辑1: 这是从答案中使用gson的尝试: 但是我得到了错误: 问题答案: 找出问题所在。需要提取jsonobject而不是获取字符串。这是解决此问题的行: