【发布时间】:2020-02-04 04:14:09
【问题描述】:
我正在编写一个函数,它将创建一个包含数据的对象。到目前为止,我得到了带有数据的对象,但不是单独作为一个集合。我想返回一个包含所有指定数据的对象作为一个学生对象,而不仅仅是每个对象的一个输入。我也尝试从 for 循环中添加 objList.add(obj) 并输出全部为空。 这是代码
class Student{
int id;
String name;
int age;
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
}
public static List<Object> createObject(Student st, List<Map<String, String>> csvStudentData) {
List<Object> objList = new ArrayList<>();
Object obj = null;
for(Map<String, String> studentData: csvStudentData) {
for (Map.Entry<String, String> entry = studentData.entrySet()) {
String key = entry.getKey();
String val = entry.getValue();
obj = insertObjectData(st.getClass(), key, value);
objList.add(obj);
}
}
return objList;
}
【问题讨论】:
-
您的 insertObjectData 方法是做什么的?你也可以发一下吗?
-
List<Object> objList = new ArrayList<>();这不应该是List的Students吗? -
除非您解释 insertObjectData 的作用,否则很难回答。一个例子也会有所帮助
-
有一个
Student参数,其唯一目的是调用getClass()是一个有问题的设计。要获得对代表Student的Class对象的引用,您可以使用Student.class。此外,不要在循环之外声明obj变量,因为它在那里没有意义。在你用insertObjectData(st.getClass(), key, value)初始化它的地方声明它。或者省略它并将insertObjectData(st.getClass(), key, value)直接传递给objList.add(…);。
标签: java for-loop arraylist java-8