Java 需要删除csv中的空列

Java 需要删除csv中的空列,java,arrays,csv,opencsv,Java,Arrays,Csv,Opencsv,我使用来自不同数据源的一些运行时数据,使用OpenCSV库创建了CSV文件 现在,我正在查找许多在列单元格中没有值的空列,因此我希望以编程方式删除这些空列 我目前尝试实现的方法是,获取字符串二维数组中的第一个CSV数据,并垂直迭代它,然后做一些事情来删除空列 还有其他更好的方法吗?请推荐 问候 //编辑 使用OpenCSV库在CSV中写入的代码: public static void writeDataToCSV(CSVWriter writer, String[][] csvData){

我使用来自不同数据源的一些运行时数据,使用OpenCSV库创建了CSV文件

现在,我正在查找许多在列单元格中没有值的空列,因此我希望以编程方式删除这些空列

我目前尝试实现的方法是,获取字符串二维数组中的第一个CSV数据,并垂直迭代它,然后做一些事情来删除空列

还有其他更好的方法吗?请推荐

问候

//编辑

使用OpenCSV库在CSV中写入的代码:

public static void writeDataToCSV(CSVWriter writer, String[][] csvData){
    List<String[]> csvDataList = new ArrayList<String[]>();
    for (String[] rowData : csvData) {
        csvDataList.add(rowData);
    }
    writer.writeAll(csvDataList);
}
public static void writeDataToCSV(CSVWriter writer,字符串[][]csvData){
List csvDataList=new ArrayList();
对于(字符串[]行数据:csvData){
csvDataList.add(rowData);
}
writer.writeAll(csvDataList);
}

实际上没有运行此操作,因此可能存在一些错误,但粗略的框架应该是:

int height;  //How many rows
int width;  //How many columns per row

Set<Integer> emptyCols = new HashSet<Integers>();  //Columns that are empty

for (int x = 0; x < width; x++) { //Look at each column
  boolean empty = true; //We have yet to find an item in this column
  for (int y = 0; y < height; y++) {
    if (!data[y][x].isEmpty()) {  //This column is not empty, we can move on
      empty = false;
      break;
    }
  }

  if (empty) {
    emptyCols.add(x);
  }
}

for (int y = 0; y < height; y++) {
  for (int x = 0; x < width; x++) {
    if (!emptyCols.contains(x)) {
      //write out data[y][x]
    }
  }
  //Terminate row
}
int高度//几排
整数宽度//每行有多少列
Set emptyCols=new HashSet()//空列
对于(intx=0;x
所以在提供的
字符串[]
中,您知道需要删除列的哪个索引,对吗?如果是,您可以这样做:

for (String[] rowData : csvData) {
    // Convert the String[] to an ArrayList to be able to easily remove the specific column
    ArrayList<String> rowArray = new ArrayList<String>(Arrays.asList(rowData));

    // Remove that specific column value
    rowArray.remove(<index of column>);

    // Convert the ArrayList back into an array so it can be written to the CSV
    String[] dataToWrite = rowArray.toArray(new String[rowArray.size()]);

    // Add it to the ArrayList of values to be written
    csvDataList.add(dataToWrite);
}
(字符串[]行数据:csvData)的
{
//将字符串[]转换为ArrayList,以便能够轻松删除特定列
ArrayList rowArray=新的ArrayList(Arrays.asList(rowData));
//删除该特定列的值
rowArray.remove();
//将ArrayList转换回数组,以便将其写入CSV
String[]dataToWrite=rowArray.toArray(新字符串[rowArray.size()]);
//将其添加到要写入的值的ArrayList中
csvDataList.add(dataToWrite);
}

你说的“删除”是什么意思?从2D字符串数组或csv文件中删除它们?我需要从csv中删除空列!然后将其作为二维字符串数组读取,并重写csv,但不包括空列。是否可以添加用于编写csv文件的代码(
CSVWriter
)?请在我的帖子中查找编辑csv编写代码@汤姆:谢谢你抓住了你最后的
,如果
语句仍然缺少括号:)@Ascalonian我过去是,现在不是。谢谢你的帮助。