将列表添加到列表列表不起作用

时间:2013-05-18 17:23:05

标签: java arrays

我无法使用此代码。 它正在读取的.txt文件位于: urls.txt

此代码的问题在于它根本不添加任何行。 每当我尝试从“列表”中获取任何内容时,它就会给我一个IndexOutOfBoundsException。

代码每30秒执行一次,所以我必须调用lists.clear();方法

注意:“list”是先前定义的:

    public static ArrayList<ArrayList<String>> lists = new ArrayList<ArrayList<String>>();

这是我的代码:

                try {
                URL urls = new URL("https://dl.dropboxusercontent.com/u/22001728/server%20creator/urls.txt");
                BufferedReader br = new BufferedReader(new InputStreamReader(urls.openStream()));

                lists.clear();

                String line;
                ArrayList<String> list = new ArrayList<String>();

                lists.add(list);

                int y = 0, z = 0;

                while ((line = br.readLine()) != null) {
                    y++;
                    if(line.equalsIgnoreCase(">")) {
                        System.out.print("Received command: INSERT ");
                        lists.add(list);
                        list.clear();
                        z++;
                        System.out.print(" ;  Jumping to " + z + "\n");
                    } else {
                        System.out.println("Line: " + line + " added to lists[" + z + "].");
                        lists.get(z).add(line);
                    }
                }

                int selectedIndex = comboModel0.getIndexOf(comboModel0.getSelectedItem());
                comboModel0.removeAllElements();

                System.out.println("\n\n\n");

                System.out.println(lists.get(1).get(1));

                System.out.println("\n\n\n");

            } catch (IOException e) {
                System.out.println("Failed to download URLS data.");
            }

1 个答案:

答案 0 :(得分:3)

您要将列表添加到列表集合中,然后将其清除。这将清除您的本地变量,以及您的集合中的列表。

lists.add(list);
list.clear();

您需要创建该列表的副本以添加到您的收藏中。

lists.add(new ArrayList<String>(list));