You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现将CSV文件中逗号分隔数字转为单元素数组

解决CSV文件数字拆分到单元素数组的问题

我的问题:
我有一个List,每个索引里存着用逗号分隔的多个数字(除最后一个数字外都以逗号分隔),想把所有数字转移到新数组中,每个数字占单独索引。另外我觉得当前读取data.csv的方式可能不合理,需要全新实现方案。

原Main类代码:

public static void main(String[] args) throws FileNotFoundException {
    String file = "data.csv";
    String line;
    List<String> list = new ArrayList<String>();
    int i = 0;
    try (BufferedReader br = new BufferedReader(new FileReader(file))) {
        while((line = br.readLine()) != null){
            //System.out.println(line);
            list.add(i, line);
            i++;
        }
    } catch (Exception e){
        System.out.println(e);
    }
}

data.csv文件内容:

20,16,23,20,2,17,9,16,0,6
20,18,16,4,10,9,4,10,16,16
3,6,19,14,14,0,5,22,4,15
19,22,6,18,9,12,15,9,25,14
20,0,1,20,6,19,20,16,15,6
13,1,6,1,4,22,3,11,1,12
10,9,20,7,21,22,3,14,1,8
25,19,21,14,15,16,25,17,6,14
0,20,10,1,3,24,24,5,10,24
2,13,0,9,18,5,21,2,24,21
17,4,16,6,22,14,15,5,10,20
6,15,10,8,10,10,16,22,15,22
2,1,3,25,15,19,0,13,7,17
24,20,6,7,3,3,12,22,23,17
12,10,10,14,2,18,21,5,21,3
13,9,20,11,8,3,23,5,5,3
4,18,4,9,1,2,24,21,23,3
3,3,2,19,6,19,1,10,5,4
13,0,12,19,24,7,10,18,18,1
0,7,10,2,22,20,21,4,3,11

预期结果:

Data[0] = 20
Data[1] = 16
Data[2] = 23
Data[10] = 20
Data[11] = 18

解决方案

直接优化读取流程,在读取每行时就拆分数字并存储,无需先保存整行内容:

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        String file = "data.csv";
        List<Integer> dataList = new ArrayList<>();

        try (BufferedReader br = new BufferedReader(new FileReader(file))) {
            String line;
            while ((line = br.readLine()) != null) {
                // 按逗号拆分每行字符串,trim处理可能的空格
                String[] numberStrings = line.split(",");
                for (String numStr : numberStrings) {
                    // 将字符串转为整数存入List,若需保留字符串直接add(numStr.trim())即可
                    dataList.add(Integer.parseInt(numStr.trim()));
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        // 将List转为数组(按需选择)
        Integer[] dataArray = dataList.toArray(new Integer[0]);

        // 验证结果
        System.out.println("Data[0] = " + dataArray[0]);
        System.out.println("Data[1] = " + dataArray[1]);
        System.out.println("Data[2] = " + dataArray[2]);
        System.out.println("Data[10] = " + dataArray[10]);
        System.out.println("Data[11] = " + dataArray[11]);
    }
}

关键说明

  • 省略了先存储整行的中间List,直接在读取时处理每行数据,更高效
  • 使用split(",")拆分每行的数字字符串,trim()避免因CSV中可能存在的空格导致转换错误
  • 可根据需求选择存储为Integer类型(数字运算更方便)或String类型
  • 最后通过toArray()方法将List转为数组,满足每个数字单独占索引的需求

内容的提问来源于stack exchange,提问作者luan_navarro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 01:32:52