私は2つの異なるcsvファイルを読み込み、2つの異なるオブジェクトにデータを取り込みます。私は、正規表現に基づいて、CSVファイルの各行を分割(正規表現は、2つのCSVファイルに異なる)と、以下に示すように、正規表現を使用して各ラインを分割することによって得られるアレイの各データを使用してオブジェクトを移入しています:文字列配列の値を使用してユーザー定義オブジェクトを設定する最も良い方法
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) {
}}
csvファイルは次のとおりです。 i。 csvファイルにABCオブジェクトを設定する:
Name,rollNo,mobileNo
Test1,1000,8888888888
Test2,1001,9999999990
ii。 csvファイルXYZオブジェクトを
Name|City|Employer|Designation
Test1|City1|Emp1|SSE
Test2|City2|Emp2|
を移入する問題は、第二のcsvファイルに示されるように、CSVファイル内の上記列のいずれかのために欠けているデータが存在することができるです。その場合、ArrayIndexOutOfBounds例外が発生します。 文字列配列のデータを使用してオブジェクトを作成する最も良い方法は何ですか?
ありがとうございます。
もう1つの問題は 'type ==" Employee "'が期待どおりに動作しないことです。 'type.equals(" Employee ")'はどのように書かれなければならないか( 'type'はnullにはなれないと仮定します)。 –
または '' Employee ".equals(type)'がnullでもかまいません。大文字/小文字を無視する方法もあります。 – csmckelvey
または 'Object.equals(" Employee "、type)'がnullでもかまいません。 –