2017-04-14 85 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)); 
    } 
} 

然後你回到你的列表

相關問題