在Java中将行转换为不同的数组

在Java中将行转换为不同的数组,java,arrays,string,Java,Arrays,String,我有一个带有行的.txt文件(在我的情况2中)。我需要读取行并将每个行转换为不同的数组。例如: 1行-A、B、C 2行-D、E、F、G等 并将其转换为: [A,B,C] [D,E,F,G] 我正在使用String.split(“,”)执行此操作 ArrayList al_1=新的ArrayList(); ArrayList al_2=新的ArrayList(); while(true){ String[]line=rbuff.readLine().split(“,”); 用于(字符串i:行){

我有一个带有行的.txt文件(在我的情况2中)。我需要读取行并将每个行转换为不同的数组。例如:
1行-A、B、C
2行-D、E、F、G等

并将其转换为:
[A,B,C]
[D,E,F,G]

我正在使用String.split(“,”)执行此操作

ArrayList al_1=新的ArrayList();
ArrayList al_2=新的ArrayList();
while(true){
String[]line=rbuff.readLine().split(“,”);
用于(字符串i:行){
al_1.添加(i);
}
如果(line==null)中断;
}
填补第二个空缺的最佳方式是什么? Thx.

也许你必须使用

ArrayList<ArrayList<String>> al = new ArrayList<ArrayList<String>>();
ArrayList al=new ArrayList();
而不是

ArrayList<String> al_1 = new ArrayList<String>();
ArrayList<String> al_2 = new ArrayList<String>();
ArrayList al_1=新的ArrayList();
ArrayList al_2=新的ArrayList();
并在列表中填入al.add()也许您必须使用

ArrayList<ArrayList<String>> al = new ArrayList<ArrayList<String>>();
ArrayList al=new ArrayList();
而不是

ArrayList<String> al_1 = new ArrayList<String>();
ArrayList<String> al_2 = new ArrayList<String>();
ArrayList al_1=新的ArrayList();
ArrayList al_2=新的ArrayList();

并在列表中填入al.add()

List<List<String>> lineLists = new ArrayList<List<String>>();

while (true) {
    List<String> lineList = new ArrayList<String>();
    String[] line = rbuff.readLine().split(",");
    for (String i : line) {
        lineList.add(i);
    }
    lineLists.add(lineList);
    if (line == null) break;
}
List linelist=new ArrayList();
while(true){
List lineList=new ArrayList();
String[]line=rbuff.readLine().split(“,”);
用于(字符串i:行){
行列表。添加(i);
}
lineList.add(lineList);
如果(line==null)中断;
}

(忽略有很多方法可以直接拆分为一个数组或列表而不使用内部循环。无论哪种方法,都应该重构内部循环。)

我更容易保存列表列表

List<List<String>> lineLists = new ArrayList<List<String>>();

while (true) {
    List<String> lineList = new ArrayList<String>();
    String[] line = rbuff.readLine().split(",");
    for (String i : line) {
        lineList.add(i);
    }
    lineLists.add(lineList);
    if (line == null) break;
}
List linelist=new ArrayList();
while(true){
List lineList=new ArrayList();
String[]line=rbuff.readLine().split(“,”);
用于(字符串i:行){
行列表。添加(i);
}
lineList.add(lineList);
如果(line==null)中断;
}

(忽略有多种方法可以立即拆分为数组或列表,而不包含内部循环。无论哪种方法,都应重构内部循环。)

此解决方案将允许您为读取文件的每一行向myArrayList添加新的ArrayList:

            List<List<String>> myArrayList = new ArrayList<List<String>>();
            List<String> myStrings;
            while (true) {
                myStrings = new ArrayList<String>();
                String[] line = rbuff.readLine().split(",");
                for (String i : line) {
                    myStrings.add(i);
                }
                myArrayList.add(myStrings);
                if (line == null)
                    break;
            }

此解决方案将允许您为读取文件的每一行向myArrayList添加一个新的ArrayList:

            List<List<String>> myArrayList = new ArrayList<List<String>>();
            List<String> myStrings;
            while (true) {
                myStrings = new ArrayList<String>();
                String[] line = rbuff.readLine().split(",");
                for (String i : line) {
                    myStrings.add(i);
                }
                myArrayList.add(myStrings);
                if (line == null)
                    break;
            }

这正是我要做的,但我要提到的是,如果不需要在ArrayList对象中使用行,可以使用数组字符串(String[])。下面是一个例子:

private static String s1 = "A,B,C",s2="D,E,F";
    private static List<String> lines = new ArrayList<String>(){{add(s1);add(s2);}};

    public static void main(String[] args) throws Throwable {
        Map<Integer,String[]> linesToArraysMap = new HashMap<Integer,String[]>();
        for(int i=1;i<=lines.size();i++) {
            linesToArraysMap.put(i, lines.get(i-1).split(","));
            //if you want to get them as ArrayLists you can do:
            //List<String> lineList = Arrays.asList(lines.get(i-1).split(","));
        }
        for(String[] stringArr:linesToArraysMap.values()) {
            System.out.println(Arrays.toString(stringArr));
        }
    }
私有静态字符串s1=“A,B,C”,s2=“D,E,F”;
私有静态列表行=newarraylist(){{add(s1);add(s2);};
公共静态void main(字符串[]args)抛出可丢弃的{
Map linesToArraysMap=newhashmap();

对于(int i=1;i我基本上就是这么做的,但是如果您不需要在ArrayList对象中使用行,那么可以使用数组字符串(String[])。下面是一个示例:

private static String s1 = "A,B,C",s2="D,E,F";
    private static List<String> lines = new ArrayList<String>(){{add(s1);add(s2);}};

    public static void main(String[] args) throws Throwable {
        Map<Integer,String[]> linesToArraysMap = new HashMap<Integer,String[]>();
        for(int i=1;i<=lines.size();i++) {
            linesToArraysMap.put(i, lines.get(i-1).split(","));
            //if you want to get them as ArrayLists you can do:
            //List<String> lineList = Arrays.asList(lines.get(i-1).split(","));
        }
        for(String[] stringArr:linesToArraysMap.values()) {
            System.out.println(Arrays.toString(stringArr));
        }
    }
私有静态字符串s1=“A,B,C”,s2=“D,E,F”;
私有静态列表行=newarraylist(){{add(s1);add(s2);};
公共静态void main(字符串[]args)抛出可丢弃的{
Map linesToArraysMap=newhashmap();

对于(int i=1;i@JohnGray这是两个
ArrayList
。在这种情况下,您必须再次使用rbuff.readLine(),再次检查null,拆分它并填充第二个数组,但您的用例非常奇怪。@JohnGray这是两个
ArrayList
。在这种情况下,您必须使用rbuff.readLine()再次检查空值,将其拆分并填充第二个数组,但您的用例非常奇怪。