ArrayList如何创建

时间:2017-03-02 20:08:07

标签: java arraylist

在Java中,我想在我的arraylist中添加一个值..但它有点不起作用。我做错了什么?

这是我的代码:

InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

System.out.print("Show List = 2");
System.out.println();
System.out.print("delete list delete = 3");
System.out.println();
System.out.print("Enter: ");

String entry = br.readLine();
int choice = Integer.parseInt(entry);

        if (choice == 1) {
            System.out.print("Which value do you want to add: ");
            String newValue = br.readLine();
            System.out.print("The value " + newValue + " has been added");
            myList.add(new String (newValue));
        }
        else if (choice == 2) {
            for (int i = 0; i < myList.size(); i++) {
                System.out.print(myList.get(i));
            }
        }
        else {
            myList.clear();
            System.out.print("ArrayList deleted");
        }
    }
}

3 个答案:

答案 0 :(得分:1)

我建议做这样的事情,while循环将阻止程序被关闭,因为每次程序重新重新启动时,都会在内存中创建一个新的空ArrayList

public static void main(String[] args) throws IOException {

    ArrayList <String> myList = new ArrayList<String>();

    InputStreamReader isr = new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(isr);

    try {

        while(true) {

            System.out.println("Add new value = 1");

            System.out.println("Show the list = 2");

            System.out.println("Delete the list = 3");

            System.out.println("Exit = 4");

            System.out.print("Enter: ");

            String entry = br.readLine();
            int choice = Integer.parseInt(entry);


            switch (choice){
                case 1:
                    System.out.print("Which value do you want to add: ");
                    String newValue = br.readLine();

                    System.out.println("The value " + newValue + " has been added");
                    myList.add(newValue);
                    break;

                case 2:
                    for (String s : myList) {
                        System.out.print(s + " ");
                    }
                    break;


                case 3:
                    myList.clear();
                    System.out.println("ArrayList deleted");
                    break;

                default:
                    throw new InterruptedException("Close program");
            }
        }

    } catch (InterruptedException e) {

    }
}

其他一些提示:

  1. 从不使用new String(),因为它会在内存中创建一个新的String,而您将无法从字符串的不变能力中受益。
  2. 使用println(something)代替print(something) then println()
  3. 使用switch而不是if else来测试枚举值总是更可取。
  4. 修改:要在reverse中显示列表,请将此case添加到switch

    case 4:
        for(int i = myList.size() - 1; i >= 0; i--){
            System.out.print(myList.get(i) + " ");
        }
    break;
    

答案 1 :(得分:0)

每次运行代码时都会初始化ArrayList。它不会作为文件保存在存储中。

如果在程序关闭时需要存储ArrayList值,则需要写入文件并将其解析为代码开头的ArrayList。

答案 2 :(得分:-1)

看起来你为初学者犯了一个很常见的错误。一旦执行了程序,它将运行一次选择然后结束。这意味着您的数组列表会被或多或少地销毁。因此,当您再次运行该程序时,您正在创建一个空的新数组列表。快速修复只是将整个程序放入while循环中,以便运行一定量的转弯。这将允许您从列表中添加,删除等。更复杂的方法是将列表保存到文件并每次填充它。