[英]Java Convert List<String> to List<Object>
I've two classess CsvRead and MyOwnClass. 我有两个类CsvRead和MyOwnClass。
In CsvRead I've a method public static List getDataFromCsv(); 在CsvRead中,我有一个方法public static List getDataFromCsv();。 It returns list of all data.
它返回所有数据的列表。 And this data I want to take in another method in class MyOwnClass and return there as list of objects of My OwnClass
我想在类MyOwnClass中使用另一种方法并返回该数据作为My OwnClass的对象列表
It looks like this: 看起来像这样:
List<String> dataFromCsv = new ArrayList<String>();
And in another class, I want to convert it to List<Object>
of my class. 在另一个类中,我想将其转换为我类的
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];
I want to return new MyOwnClass(name, surname, birth);
我想返回
new MyOwnClass(name, surname, birth);
MY ERROR: array required but List found: String name = allData[0]; 我的错误:需要数组,但找到列表:字符串名称= allData [0]; etc
等等
You can create a method
to convert a String
to MyOwnClass
and use stream
to map the elements, eg: 您可以创建一个
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());
However, this may not work if let's say name
or surname
contains comma. 但是,如果说
name
或surname
包含逗号,则此方法可能无效。 In which case, I would recommend having a look at OpenCSV
library and this example of how to read csv into objects. 在这种情况下,我建议您看一下
OpenCSV
库以及此示例如何将csv读入对象。
Supposing that the list contains the name, surname and birth in every group of 3 strings (ie, the elements on index 0, 3, 6, 9 etc. contain the name), you might try the following: 假设列表在每组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
Somthing like this : 像这样的东西:
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));
}
}
And then you return your list 然后您返回列表
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.