如何在java中转置列表

时间:2015-10-19 17:33:37

标签: java arraylist data-structures collections

我想转置我的列表

假设我有studentList

List<Student> studentList = new ArrayList<Student>();
studentList.add(new Student(101, "English", "95"));
studentList.add(new Student(101, "Maths", "82"));
studentList.add(new Student(101, "Biology", "93"));
studentList.add(new Student(101, "Physics", "77"));
studentList.add(new Student(101, "Chemistry", "65"));
studentList.add(new Student(102, "English", "86"));
studentList.add(new Student(102, "Maths", "75"));
studentList.add(new Student(102, "Biology", "68"));
studentList.add(new Student(102, "Physics", "63"));
studentList.add(new Student(102, "Chemistry", "84"));
studentList.add(new Student(103, "English", "92"));
studentList.add(new Student(103, "Maths", "88"));
studentList.add(new Student(103, "Biology", "67"));
studentList.add(new Student(103, "Physics", "81"));
studentList.add(new Student(103, "Chemistry", "93"));

public class Student {

    private Integer rollNo;

    private String subject;

    private String marks;

..........
}

我想将此数据转置到StudentResultList

List<StudentResult> studentResultList = new ArrayList<StudentResult>();


public class StudentResult {

    private String rollno;

    private String english;

    private String maths;

    private String biology;

    private String physics;

    private String chemistry;

..........

}

预期产出:

            101         102         103

English     95          86          92

Maths       82          75          88

Biology     93          68          67  

Physics     77          63          81  

Chemistry   65          84          93  

我必须使用哪些收藏品来转置我的清单?

我尝试使用

转换

HashMap<Integer,Object> (Integer是RollNo,Object是另一个hashmap)

HashMap<String, String> (String是Subject,另一个String是标记)

使用此我将学生列表转换为studentResultlist。

有人建议我,有没有更好的方法来转置清单?

1 个答案:

答案 0 :(得分:0)

没有隐式/自动方式来做到这一点。

您必须坐下来写下迭代studentList的代码,并收集构建其他列表所需的信息。

请记住:基本上你有两个物体;一个代表学生班级的对象;另一个持有StudentResult类的对象。但计算机并不知道应该收集哪一类的属性来构建第二类的对象 - 除非你坐下来提供这些信息。

换句话说:如果您要查看数据库,则可以运行查询和其他操作来构建数据的不同视图。但是没有数据库,所以在现有数据上构建不同视图的所有逻辑都必须手动编程。