Как создать объект с данными в Java - PullRequest
0 голосов
/ 04 февраля 2020

Я пишу функцию, которая создаст объект с данными. Пока что я получаю объекты с данными, но по отдельности не в виде коллекции. Я хотел бы вернуть объект со всеми обозначенными данными как один объект Student, а не только один вход для каждого объекта. Я попытался добавить objList.add (obj) из для l oop и выводит все null. Вот код

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;
}

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020

Вы изменяете тело метода следующим образом:

public static List<Object> createObject(Student st, List<Map<String, String>> csvStudentData) {
    List<Student> objList = new ArrayList<>();
    for(Map<String, String> studentData: csvStudentData) { 
       Student student = new Student();
       for (Map.Entry<String, String> entry = studentData.entrySet())  {
           String key = entry.getKey();
           String val = entry.getValue();
           Field  field = Student.class.getDeclaredField(key);
           student.set(field, value);
       }
        objList.add(student);
    }
    return objList;
}

Вы также добавляете конструктор по умолчанию в класс Student

0 голосов
/ 04 февраля 2020

Вы можете сделать это в java -8 потоке

 List<Object> objList = csvStudentData.stream() 
              .flatMap(map->map.entrySet()
                               .stream()
                               .map(entry->insertObjectData(st.getClass(), entry.getKey(), entry.getValue())))
              .collect(Collectors.toList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...