【问题标题】:List of List in for loops Javafor循环Java中的List列表
【发布时间】:2017-03-19 13:27:02
【问题描述】:

我有问题。我尝试做开发 程序几次问我一些数字。我给出数字列表。我尝试将它们保存在 List> 中。数字可以按空格分隔。现在我有了这个代码:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class TimeSeries {

public static void main(String[] args) {
    // TODO Auto-generated method stub

    System.out.println("Numbers of rows:");
    Scanner in = new Scanner(System.in);
    int NumberLines = in.nextInt();
    in.nextLine();
    String Ciag;
    List<List<Integer>> ll = new ArrayList<List<Integer>>();
    List<Integer> list = new ArrayList<Integer>();
    for (int i = 0; i < NumberLines; i++) {
        list.clear();
        System.out.println("Add row " +(i+1));
        Ciag = in.nextLine();
        for (int t=0; t<Ciag.length(); t++) {

            if(Character.isWhitespace(Ciag.charAt(t)))
            {

            }
            else
            {list.add(Character.getNumericValue(Ciag.charAt(t)));
            }

        }

        System.out.println(list);
        ll.add(list);
        }

    System.out.println(ll);

}


    }

但我的输出是(示例):

Numbers of rows:
3
Add row 1
0 0 0
[0, 0, 0]
Add row  2
1 2 3
[1, 2, 3]
Add row  3
54 6 8
[5, 4, 6, 8]
[[5, 4, 6, 8], [5, 4, 6, 8], [5, 4, 6, 8]]

但我需要 [[0,0, 0], [1, 2, 3], [5, 4, 6, 8]]

【问题讨论】:

  • 您正在重复使用list 引用,因此您已多次添加相同的List。不要重复使用引用。

标签: java list loops for-loop arraylist


【解决方案1】:

问题是您将相同的list 添加到ll 中多次。 您需要添加不同的列表来获得您想要的行为。 为此,您需要在 for 循环的每次迭代中创建一个全新的列表,而不是清除和重用现有的 list

更改这些行:

List<List<Integer>> ll = new ArrayList<List<Integer>>();
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < NumberLines; i++) {
    list.clear();

到这里:

List<List<Integer>> ll = new ArrayList<>();
for (int i = 0; i < NumberLines; i++) {
    List<Integer> list = new ArrayList<>();

【讨论】:

    猜你喜欢
    • 2010-12-21
    • 2011-12-08
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 2014-02-22
    • 1970-01-01
    相关资源
    最近更新 更多