2017-04-14 88 views
-1

我有两个classess CsvRead和MyOwnClass。Java的转换列表<String>到列表<Object>

在CsvRead我有一个方法public static List getDataFromCsv();它返回所有数据的列表。而这个数据我想在课堂个MyOwnClass另一种方法和我的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);

MY ERROR:需要数组,但列表中发现:字符串名称= ALLDATA [0];等

+5

什么问题了吗? –

+0

CsvClass中的一个方法返回String与所有csv数据的列表。在另一个类中,我想获取这些数据,将它分配到列表和下一个对象的返回列表我自己的类 – Smithy

+0

它包含在从另一个类的文件中获取csv数据的方法内 – Smithy

回答

2

您可以创建一个methodString转换为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()); 

但是,如果让我们说namesurname包含逗号,这可能无法正常工作。在这种情况下,我会建议看看OpenCSV库和this如何将csv读入对象的示例。

0

假设该列表包含每个组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 
0

财产以后这样的:

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

然后你回到你的列表

相关问题