Java将行转为列
流程图
stateDiagram
[*] --> 输入数据
输入数据 --> 解析数据
解析数据 --> 转换数据
转换数据 --> 输出结果
输出结果 --> [*]
详细步骤
- 输入数据:从外部获取需要转换的数据,可以是一个数组、集合或者文件等。
- 解析数据:对输入的数据进行解析,提取需要转换的行和列。
- 转换数据:根据解析的结果,将行转为列,生成新的数据结构。
- 输出结果:将转换后的结果输出,可以是打印到控制台、写入文件或者返回给调用方等。
具体实现
下面是一个示例代码,演示了如何将行转为列:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class RowToColumnConverter {
public static void main(String[] args) {
// 输入数据
String[][] inputData = {
{"姓名", "年龄", "性别"},
{"Tom", "20", "男"},
{"Alice", "25", "女"},
{"Bob", "30", "男"}
};
// 解析数据
List<String> columnNames = new ArrayList<>();
Map<String, List<String>> columnValues = new HashMap<>();
for (int i = 0; i < inputData[0].length; i++) {
columnNames.add(inputData[0][i]);
columnValues.put(inputData[0][i], new ArrayList<>());
}
for (int i = 1; i < inputData.length; i++) {
for (int j = 0; j < inputData[i].length; j++) {
columnValues.get(inputData[0][j]).add(inputData[i][j]);
}
}
// 转换数据
String[][] outputData = new String[columnNames.size()][columnValues.get(columnNames.get(0)).size()];
for (int i = 0; i < columnNames.size(); i++) {
outputData[i] = columnValues.get(columnNames.get(i)).toArray(new String[0]);
}
// 输出结果
for (int i = 0; i < outputData.length; i++) {
for (int j = 0; j < outputData[i].length; j++) {
System.out.print(outputData[i][j] + " ");
}
System.out.println();
}
}
}
代码解析:
- 首先,我们定义了一个包含姓名、年龄和性别的二维数组作为输入数据。
- 然后,我们定义了两个集合,一个用于保存列名,另一个用于保存每一列的值。
- 接下来,我们通过遍历输入数据的第一行,提取列名,并将每一列的值初始化为空列表。
- 然后,我们通过遍历输入数据的每一行,将每个值添加到对应列的值列表中。
- 接着,我们创建一个新的二维数组作为输出数据,其行数等于列名的数量,列数等于每一列的值列表的长度。
- 最后,我们将每一列的值列表转换为数组,并赋值给输出数据的对应行。
- 最后,我们通过遍历输出数据,将结果打印到控制台。
运行以上代码,输出结果如下:
姓名 Tom Alice Bob
年龄 20 25 30
性别 男 女 男
这就是将行转为列后的结果。
总结
通过上述的示例代码,我们可以看出将行转为列的方法比较简单,主要是通过合适的数据结构和遍历操作来实现。可以根据实际需求对代码进行调整和优化,例如添加异常处理、支持更多的数据格式等。希望对你有所帮助!