我在一个变量中存储了多个数组,每个数组是大小1。我试图将它们全部组合到一个单个数组中。我使用缓冲读取器读取CSV文件,然后使用以下方法将其分为阵列列表:
public static arraylistcsvtoArray(字符串csvdata({ arrayList结果= new ArrayList((;
if (csvData != null){
String[] splitData = csvData.split(",");
for(int i = 0; i < splitData.length; i++){
if(!(splitData[i] == null) || !(splitData[i].length() == 0)) {
result.add(splitData[i].trim());
}
}
}
return result;
}
该方法将CSV的每一行分解为自己的阵列列表。我想将所有元素组合在例如结果中。有什么想法吗?
,所以这个想法是拥有一个arraylist的父级阵列。每次调用该功能时,请传递对先前结果的引用,以便可以合并它们。这只是可以实现的多种方法中的一个,但是应该为您提供进一步优化的起点。
// Initialize and provide dummy input.
int requiredIndex = 5;
ArrayList<String> results = new ArrayList<String>();
csvToArray("some,column,data,with,seven,columns,only", results, requiredIndex);
csvToArray("more,data,that,came, in, just, now , and is, longer", results, requiredIndex);
csvToArray("a, short, line", results, requiredIndex);
csvToArray("last, line, of, input, which, is, correct.", results, requiredIndex);
System.out.println(results);
// output : [columns, just, is]
// Update the method as below.
public static void csvToArray(String csvData, ArrayList<String> results, int index){
if (csvData != null){
String[] splitData = csvData.split(",");
int wordCount = 0;
if(splitData.length < index)
return;
for(int i = 0; i < splitData.length; i++){
if(!(splitData[i] == null) || !(splitData[i].length() == 0)) {
ArrayList<String> individualList = new ArrayList<String>();
individualList.add(splitData[i].trim());
if(wordCount == index)
results.add(splitData[i].trim());
wordCount++;
}
}
}
}
您可能会注意到,我没有对行数或列数放置任何限制。这是为了迎合更广泛的方案,但如果没有,则可以使用限制初始化,因此内存分配得到了优化。
您可以将每个ArrayList添加到另一个arraylist,
ArrayList allresults = new ArrayList();
result = ArrayListcsvToArray(csvData);
allresults.add(result);
public static ArrayListcsvToArray(String csvData){
ArrayList result = new ArrayList();
if (csvData != null){
String[] splitData = csvData.split(",");
for(int i = 0; i < splitData.length; i++){
if(!(splitData[i] == null) || !(splitData[i].length() == 0)) {
result.add(splitData[i].trim());
}
}
}
return result;
}