java如何让竖变为横
转换数据结构的方法
使用Java将垂直(列)数据转换为水平(行)数据,可以通过多种方式实现,具体取决于数据结构和需求。以下是几种常见场景的解决方案:
数组转换 对于二维数组,行列互换可通过嵌套循环实现:
int[][] vertical = {{1}, {2}, {3}}; // 竖排数据
int[][] horizontal = new int[vertical[0].length][vertical.length];
for (int i = 0; i < vertical.length; i++) {
for (int j = 0; j < vertical[i].length; j++) {
horizontal[j][i] = vertical[i][j];
}
}
集合类转换
使用List和流式操作转换数据方向:
List<List<String>> verticalData = Arrays.asList(
Arrays.asList("A1", "B1", "C1"),
Arrays.asList("A2", "B2", "C2")
);
List<List<String>> horizontalData = IntStream.range(0, verticalData.get(0).size())
.mapToObj(i -> verticalData.stream()
.map(list -> list.get(i))
.collect(Collectors.toList()))
.collect(Collectors.toList());
字符串方向转换
处理字符串的竖排转横排时,需要注意换行符的处理:

String verticalText = "H\ne\nl\nl\no";
String horizontalText = verticalText.replace("\n", ""); // 输出"Hello"
对于多行文本的矩阵式转换:
String[] lines = {"abc", "def", "ghi"};
StringBuilder result = new StringBuilder();
for (int col = 0; col < lines[0].length(); col++) {
for (String line : lines) {
result.append(line.charAt(col));
}
result.append("\n");
}
文件数据处理
读取竖排格式的文本文件并转换为横排:
List<String> lines = Files.readAllLines(Paths.get("vertical.txt"));
try (PrintWriter writer = new PrintWriter("horizontal.txt")) {
lines.forEach(line -> writer.print(line + " "));
}
对于CSV文件的行列转置:

List<List<String>> csvData = Files.lines(Paths.get("data.csv"))
.map(line -> Arrays.asList(line.split(",")))
.collect(Collectors.toList());
List<List<String>> transposed = new ArrayList<>();
for (int i = 0; i < csvData.get(0).size(); i++) {
final int col = i;
transposed.add(csvData.stream()
.map(row -> row.get(col))
.collect(Collectors.toList()));
}
GUI组件方向调整
在Swing中改变组件布局方向:
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS)); // 水平排列
panel.add(new JButton("Button1"));
panel.add(new JButton("Button2"));
数据库查询结果转换
JDBC结果集的行列转换示例:
ResultSet rs = stmt.executeQuery("SELECT col1, col2 FROM table");
List<List<Object>> horizontalData = new ArrayList<>();
while (rs.next()) {
horizontalData.add(Arrays.asList(rs.getObject(1), rs.getObject(2)));
}
二进制数据处理
字节数组的位方向转换(小端转大端):
byte[] littleEndian = {0x01, 0x00, 0x00, 0x00};
byte[] bigEndian = new byte[littleEndian.length];
for (int i = 0; i < littleEndian.length; i++) {
bigEndian[i] = littleEndian[littleEndian.length - 1 - i];
}






