Java存储列表到数组

Java存储列表到数组,java,arrays,list,Java,Arrays,List,我正在尝试像这样读取CSV文件: 1,0,0,0,2,0,0,2, 0,2,0,0,0,0,0,5, 0,0,0,0,0,0,5,0, 这是我的预期结果: [1, 5, 8] [2, 8,] [7] 这是我的Java编码: CSVReader a = new CSVReader(new FileReader("CM.csv")); List<String[]> aa = a.readAll(); List<Integer> list = new ArrayList&

我正在尝试像这样读取CSV文件:

1,0,0,0,2,0,0,2,
0,2,0,0,0,0,0,5,
0,0,0,0,0,0,5,0,
这是我的预期结果:

[1, 5, 8]
[2, 8,]
[7]
这是我的Java编码:

CSVReader a = new CSVReader(new FileReader("CM.csv"));
List<String[]> aa = a.readAll();

List<Integer> list = new ArrayList<>(); 
Object[] CM = new Object[3];

for (int i = 0; i < aa.size(); i++) {
    for (int x = 0; x < aa.get(i).length-1; x++) {
        if ( Integer.parseInt(aa.get(i)[x].trim()) >= 1 ){
                list.add(x+1);
            }
        }            
        CM[i] = list;
        list.clear();
    }

for (int i = 0; i < CM.length; i++) {
    System.out.print(CM[i]);
    System.out.print("\n");
    }
我想将列表存储到数组中,请忽略我读取CSV文件的方式

替换
list.clear()带有
列表=新的ArrayList()

您正在将list赋值给CM[i],当您调用list.clear()时,它将清除列表并使其成为空列表,因为您的CM变量引用的是list对象,所以它不会有任何值

要获取值,请执行以下操作:

for (int i = 0; i < CM.length; i++) {
    List dataList = (List) CM[i];
    for (int j = 0; j < dataList.size(); j++) {
        // do your stuff
        System.out.println(dataList.get(j));
    }
}
for(int i=0;i
公共类位置{
私有整数x=0;
私有整数y=0;
公共位置(整数x,整数y)
{
这个.x=x;
这个。y=y;
}
公共int getX()
{
归还这个.x;
}
公共int getY()
{
把这个还给我。
}
}
CSVReader CSVReader=新的CSVReader(新文件阅读器(“CM.csv”);
List records=csvReader.readAll();
ArrayList位置=新的ArrayList();
对于(int i=0;i0
{
增加(新位置(i,j));
}
}
}

现在,您的所有位置都将存储在locations arraylist中。你所要做的就是循环遍历它,并获得记录数组列表的坐标。

两件事:1。你实际上是如何得到这个输出的?2.你应该使用比a和aa更好的变量名。这对我来说没有意义?你想做什么?Re:BradyK如果我知道我不需要问这里,请解释你想做什么,以便我们可以帮助你…你现在有excel输入,你想用excel输入做什么?我的问题是如何将列表存储到数组中,不是我的编码快捷方式,请忽略我是如何读取输入的。这正是您将列表存储到数组中的方式。这回答了您的问题,请尝试代码。请再次阅读我的问题,我已编辑过,也许您可以看到差异。我已阅读多次,您尝试执行的操作毫无意义。如果要存储数字大于1的位置,请使用x和y创建一个location类,并将这些对象存储在arraylist中。你的问题很不清楚你想做什么或者为什么你想做。根据你在评论中所说的,这个答案是正确的。您需要更清楚地了解您所问的问题,然后我们才能更好地帮助您。还有一个问题,我如何访问每个数组CM的列表值??如果我使用CM[i].list[j],它对(int i=0;ifor (int i = 0; i < CM.length; i++) { List dataList = (List) CM[i]; for (int j = 0; j < dataList.size(); j++) { // do your stuff System.out.println(dataList.get(j)); } }
public class Location {
   private int x = 0;
   private int y = 0;

   public Location(int x, int y)
   {
       this.x = x;
       this.y = y;
   }

   public int getX()
   {
       return this.x;
   }
   public int getY()
   {
       return this.y.
   }

}


CSVReader csvReader = new CSVReader(new FileReader("CM.csv"));
List<String[]> records = csvReader.readAll();

ArrayList<Location> locations = new ArrayList<Location>();

for(int i = 0; i < records.size(); i++)
{
    for(int j = 0; j < records.get(i).length; j++)
    {
        if(Integer.parseInt(records.get(i)[j]) > 0)
        {
             locations.add(new Location(i,j));
        }
    }
}