[英]Java Convert List<String> to List<Object>
我有两个类CsvRead和MyOwnClass。
在CsvRead中,我有一个方法public static List getDataFromCsv();。 它返回所有数据的列表。 我想在类MyOwnClass中使用另一种方法并返回该数据作为My OwnClass的对象列表
看起来像这样:
List<String> dataFromCsv = new ArrayList<String>();
在另一个类中,我想将其转换为我类的List<Object>
。
private static List<String> getDataFromCsvClass = new ArrayList<String>();
getDataFromCsvClass = CsvReader.getAllCsvData(filename);
String name = dataFromCsv[0];
String surname = dataFromCsv[1];
String birth = dataFromCsv[2];
我想返回new MyOwnClass(name, surname, birth);
我的错误:需要数组,但找到列表:字符串名称= allData [0]; 等等
您可以创建一个method
来转换一个String
来MyOwnClass
和使用stream
的元素映射,例如:
public static MyOwnClass convertToObject(String element){
String[] tokens = element.split(",");
return new MyOwnClass(tokens[0], tokens[1], tokens[2]);
}
//code to convert
List<String> dataFromCsv = new ArrayList<String>();
List<MyOwnClass> list = dataFromCsv.stream()
.map(e -> convertToObject(e))
.collect(Collectors.toList());
但是,如果说name
或surname
包含逗号,则此方法可能无效。 在这种情况下,我建议您看一下OpenCSV
库以及此示例如何将csv读入对象。
假设列表在每组3个字符串中都包含名称,姓氏和出生(即索引0、3、6、9等上的元素包含名称),则可以尝试以下操作:
public List<MyOwnClass> convertCsvData(List<String> csv_data)
{
// Initialize result
List<MyOwnClass> result;
result = new ArrayList<MyOwnClass>();
// Parse data
int counter;
String name;
String surname;
String birth;
for (counter = 0; counter < csv_data.size(); counter += 3)
{
name = csv_data.get(counter);
surname = csv_data.get(counter + 1);
birth = csv_data.get(counter + 2);
result.add(new MyOwnClass(name, surname, birth));
}
// Done
return (result);
} // convertCsvData
像这样的东西:
private static MyOwnClass toMyOwnClass(String str){
String[] object= str.split(",");
return new MyOwnClass(object[0], object[1], object[2]);
}
List<String> dataFromCsv = new ArrayList<String>();
List<MyOwnClass> list = new ArrayList<>();
for(String string : dataFromCsv ){
if(StringUtils.isNoneEmpty(string)){
list.add(toMyOwnClass(string));
}
}
然后您返回列表
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.