0

好的,我需要一些语法问题的帮助。我有一个类,我希望它把它放到一个数组列表中,并使用 for 循环填充数组列表。这是我想要的一个例子:

    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);

  }

是的,代码没有运行它只是我想要它做的一个例子。我不知道语法,我想要一个带有类的数组列表,这些类可以通过给出 i 来检索,并且只能通过那个 'i' 来获取这两个变量;任何帮助将不胜感激。非常感谢您抽出宝贵的时间,很抱歉描述得很糟糕,但我不能更具体。

4

4 回答 4

4

目前尚不清楚您要完成什么,但也许这足以指导如何ArrayList正确使用。我将您的类名从 更改wW以匹配通常的 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 + ")");
}
于 2012-12-04T02:46:30.077 回答
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);

  }
于 2012-12-04T02:38:26.047 回答
0

AnArrayList不是传统意义上的数组;它是一个对象。您将不得不尊重如何访问 type 的元素List,这可以通过 Java 7 API 找到。

也就是说,您可以使用以下两个选项将值放入其中。

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

.addAll(Collection<? extends E> collection),它将另一个集合类型作为参数。如果您Arrays.asList()尝试将原始数组放入List.

最后的一些事情:

  • 编写接口而不是具体类型更可取。这样,您不必在意是否需要开始使用 aLinkedList而不是ArrayList.
  • 您应该键入您的列表,否则 Java 会警告您未检查的操作。如果您对放入List.
  • 此外,您将无法在List不使用的情况下从 中检索特定字段/函数instanceof,因为存储在其中的所有内容都会是Object,这是不可取的。
于 2012-12-04T02:41:56.070 回答
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());
}
于 2012-12-04T02:46:54.043 回答