Java将List <List>转换为List <object>

时间:2017-04-14 11:47:14

标签: java

我有两个classess 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);

MY ERROR:数组必需但找到List:String name = allData [0];等

3 个答案:

答案 0 :(得分:2)

您可以创建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());

但是,如果我们说namesurname包含逗号,则可能无效。在这种情况下,我建议您查看OpenCSV库和this如何将csv读入对象的示例。

答案 1 :(得分: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

答案 2 :(得分: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));
   }
 }

然后你返回你的清单