Je lis deux fichiers csv différents et remplit des données dans deux objets différents. Je partage chaque ligne du fichier CSV basé sur regex (regex est différent pour les deux fichiers de CSV) et peupler l'objet en utilisant chaque ensemble de données de ce tableau que l'on obtient en divisant chaque ligne en utilisant regex comme indiqué ci-dessous:Meilleure façon de remplir un objet défini par l'utilisateur en utilisant les valeurs du tableau de chaînes
public static <T> List<T> readCsv(String filePath, String type) {
List<T> list = new ArrayList<T>();
try {
File file = new File(filePath);
FileInputStream fileInputStream = new FileInputStream(file);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader)
list = bufferedReader.lines().skip(1).map(line -> {
T obj = null;
String[] data = null;
if (type.equalsIgnoreCase("Student")) {
data = line.split(",");
ABC abc = new ABC();
abc.setName(data[0]);
abc.setRollNo(data[1]);
abc.setMobileNo(data[2]);
obj = (T)abc;
} else if (type.equalsIgnoreCase("Employee")) {
data = line.split("\\|");
XYZ xyz = new XYZ();s
xyz.setName(Integer.parseInt(data[0]));
xyz.setCity(data[1]);
xyz.setEmployer(data[2]);
xyz.setDesignation(data[3]);
obj = (T)xyz;
}
return obj;
}).collect(Collectors.toList());} catch(Exception e) {
}}
Les fichiers CSV sont les suivants: i. fichier csv pour remplir l'objet ABC:
Name,rollNo,mobileNo
Test1,1000,8888888888
Test2,1001,9999999990
ii. fichier csv pour peupler objet XYZ
Name|City|Employer|Designation
Test1|City1|Emp1|SSE
Test2|City2|Emp2|
La question est qu'il peut y avoir des données manquantes pour l'une des colonnes ci-dessus dans le fichier csv comme indiqué dans le second fichier csv. Dans ce cas, j'obtiendrai l'exception ArrayIndexOutOfBounds. Quelqu'un peut-il me dire quelle est la meilleure façon de peupler l'objet en utilisant les données du tableau de chaînes?
Merci d'avance.
L'autre problème est 'type ==" Employee "' ne fonctionnera pas comme prévu. 'type.equals (" Employee ")' est comment il doit être écrit (en supposant que 'type' ne peut pas être nul). –
Ou '" Employee ".equals (type)' si elle peut être nulle. Il y a aussi des méthodes liées à l'ignorance majuscules/minuscules. – csmckelvey
Ou 'Objects.equals (" Employee ", type)' si elle peut ou ne peut pas être nulle. –