簡體   English   中英

Java轉換列表 <String> 列出 <Object>

[英]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來轉換一個StringMyOwnClass和使用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庫以及示例如何將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM