课程的Arraylist

时间:2012-12-04 02:33:26

标签: java class arraylist

好的,我需要一些语法问题的帮助。我有一个类,我希望它将它放入arraylist,并使用for循环填充arraylist。 这是我想要的一个例子:

    public class w{
    int x;
    int y;
    }
    Arraylist m = new Arraylist();
    for(int i=0; i<n;i++)
  {
          m[i].add(w.x);
          m[i].add(w.y);

  }

是的,代码无法运行,只是我想要它做的一个例子。我不知道语法,我想要一个带有类的arraylist,可以通过给出i来检索,只通过'i'得到两个变量; 任何帮助都会被贬低。非常感谢你的时间,抱歉糟糕的描述,但我不能更具体。

4 个答案:

答案 0 :(得分:4)

目前还不清楚你要完成的是什么,但也许这对于如何正确使用ArrayList就足够了。我将您的类名从w更改为W以匹配通常的Java编码约定。

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

ArrayList<W> m = new ArrayList<W>(); // can be 'new ArrayList<>()` in Java 7
m.add(new W(1, 2));
m.add(new W(5,-3));
// etc.

for (int i=0; i<m.size(); i++) {
    W w = m.get(i);
    System.out.println("m[" + i + "]=(" + w.x + "," + w.y + ")");
}

for (W w : m) {
    System.out.println("next W: (" + w.x + "," + w.y + ")");
}

答案 1 :(得分:0)

您不能使用方括号表示法来通过Java中的索引访问集合。是否以及如何取决于特定的集合API。在List的情况下,add方法的第二个版本将索引作为参数。

List<Integer> m = new ArrayList<>();
    for(int i=0; i<n;i++)
  {
          m.add(i, w.x);
          m.add(i, w.y);

  }

答案 2 :(得分:0)

ArrayList不是传统意义上的数组;它是对象。您必须尊重人们如何访问List类型的元素,can be found with the Java 7 API

即您可以使用以下两个选项将值放入其中。

.add(E element),它将一个具有相同泛型类型的对象作为参数,并且

.addAll(Collection<? extends E> collection),它将另一个集合类型作为参数。如果您尝试将基本数组放入List,则可以将此项与Arrays.asList()结合使用。

最后一些事情:

  • 更希望对接口进行编码而不是具体类型。这样,您无需关心是否需要开始使用LinkedList而不是ArrayList
  • 您应该键入您的列表,否则Java将警告您未经检查的操作。如果您放弃List
  • 中的内容,这些内容可能会不安全
  • 此外,如果不使用List,您将无法从instanceof检索特定字段/功能,因为存储在其中的所有内容都将是Object,这不是'{1}}是可取的。

答案 3 :(得分:0)

你可以这样使用它。

public class w{
    int x;
    int y;
    }
  w ref1=new w();
  w ref2=new w();
    Arraylist<w> m = new Arraylist<w>();  
    m.add(ref1);
    m.add(ref2);

或者你可以做

for(some condition)
{
    m.add(new w());
}