ArrayList构造函数并在方法中使用

时间:2013-09-15 17:34:44

标签: java arraylist

嗨,我是新手,只是学习java。我正在研究ArrayList n来自这个代码,例如{CODE1}。 我想使用相同的代码,但添加一个ArrayListDemo构造函数n创建方法,如displayList和removeElement。 我试图找到这样的例子,但我不理解它们。

这是我试过的代码{CODE2}我的修改请告诉我哪里出错了。

*** CODE1 {示例代码} * * * *

import java.util.ArrayList;

public class AraryListDemo {

  public static void main(String[] args) {

    ArrayList al = new ArrayList();
    System.out.print("Initial size of al :  " + al.size());
    System.out.print("\n");

    //add.elements to the array list
    al.add("C");
    al.add("A");
    al.add("E");
    al.add("B");
    al.add("D");
    al.add("F");
    al.add(1,"A2");//inserts objects "A2" into array at index 1

    System.out.print("size of al after additions " + al.size());
    System.out.print("\n");

    //display the array list
    System.out.print("contents of al: " +  al );
    System.out.print("\n");

    //Remove elements from the array list
    al.remove("F");
    al.remove(2);

    System.out.print("size of after deletions : " + al.size());
    System.out.print("\n");
    System.out.print("contents of al:" + al);

  }

}

** * ** * ** CODE 2 {我的修改} ** * ** * ** * * ***

class ArrayListDemo

{
ArrayList<String> al;//variable declared




ArrayListDemo() throws IOException//try constructor for this
{
    al = new ArrayList<String>();
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("\n Enter Student Names");
    for(int i=0;i<=5;i++)// will dispaly 
    {
        al.add(br.readLine());
    }



}
void dispList(ArrayList <String> al)
{
    System.out.println("\n Display Student Names");
    for(String str : al)
    {
        System.out.println("\t Name :  "+str+"\n");
    }
}
}
class DisplayArrayList
{
public static void main(String []args) throws IOException
{

    ArrayList <String> al = new ArrayList <String>();
    ArrayListDemo e = new ArrayListDemo();
    e.dispList(al);

}
}

4 个答案:

答案 0 :(得分:2)

ArrayList <String> al = new ArrayList <String>();
ArrayListDemo e = new ArrayListDemo();
e.dispList(al);

在上面的代码中,您要创建一个新的ArrayList al,并将其传递给dispList()方法,该方法不会迭代,因为al具有没有元素

我想你想迭代你在ArrayListDemo中创建的元素。因此,您可能希望编写如下所示的dispList()方法,现在将使用在类中定义的ArrayList

void dispList() //method parameter "al" is removed now and, al is the al of ArrayListDemo
{
    System.out.println("\n Display Student Names");
    for(String str : al) //here al refers to ArrayList defined within the class
    {
        System.out.println("\t Name :  "+str+"\n");
    }
}

答案 1 :(得分:0)

目前尚不清楚你究竟在问什么,但我注意到你的al声明(复数)有问题:你的ArrayList名为al main,您还有另一个属于ArrayListDemo的人。您正在读取第二个值,然后打印出(空)第一个值。

这里你真的不需要一个带构造函数的单独类。您可以只有两个static方法readList(List<String> al)dispList(List<String> al)。如果您确实想要一个单独的课程,请选择一个地方来存储List(在main或课程中)。

作为一个注释,通常最好使用最常用的变量和方法参数类型。您声明的是ArrayList,这很好,但如果您创建变量和参数List,则代码更灵活。

答案 2 :(得分:0)

使您努力工作的最简单(但不是首选)解决方案是将数组传递给构造函数填充的displist()方法。

public static void main(String []args) throws IOException
{
    ArrayListDemo e = new ArrayListDemo();
    e.dispList(e.al);
}

答案 3 :(得分:0)

您的代码运行如下: -

  • ArrayList <String> al = new ArrayList <String>(); // Initialise an ArrayList of type string

  • ArrayListDemo e = new ArrayListDemo(); // Initialised class ArrayListDemo

  • 类构造函数从用户输入中读取数据,并按ArrayList

  • 添加到a1 br.readLine()
  • e.dispList(al);迭代ArrayList实例a1并打印其输出。