如何遍历对象的ArrayList?

时间:2016-10-08 04:52:14

标签: java arraylist

我有一个名为SparseMatrix的类。它包含节点的ArrayList(也是类)。我想知道如何遍历数组并访问Node中的值。我尝试过以下方法:

 //Assume that the member variables in SparseMatrix and Node are fully defined.
 class SparseMatrix {
     ArrayList filled_data_ = new ArrayList();
     //Constructor, setter (both work)

     // The problem is that I seem to not be allowed to use the operator[] on
     // this type of array.
     int get (int row, int column) {
         for (int i = 0; i < filled_data_.size(); i++){
             if (row * max_row + column == filled_data[i].getLocation()) {
                 return filled_data[i].getSize();
             }
         }
         return defualt_value_;
     }
 }

我可能会切换到静态数组(并在每次添加对象时重新创建它)。如果有人有解决方案,我非常感谢您与我分享。另外,请提前感谢您帮助我。

如果您对此无法理解,请随时提出问题。

5 个答案:

答案 0 :(得分:3)

假设filled_data_是一个包含名为Node的类的对象列表的列表。

List<Nodes> filled_data_ = new ArrayList<>();
for (Node data : filled_data_) {
    data.getVariable1();
    data.getVariable2();
}

更多信息http://crunchify.com/how-to-iterate-through-java-list-4-way-to-iterate-through-loop/

答案 1 :(得分:2)

首先,您不应该使用原始类型。有关详细信息,请参阅此链接:What is a raw type and why shouldn't we use it?

修复是声明数组列表所持有的对象类型。将声明更改为:

 ArrayList<Node> filled_data_ = new ArrayList<>();

然后,您可以使用filled_data_.get(i)访问数组列表中的每个元素(而不是filled_data_[i],这适用于常规数组)。

`filled_data_.get(i)`

以上将返回索引i处的元素。这里的文档:https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#get(int)

答案 2 :(得分:1)

如果您没有使用泛型,那么您需要转换对象

$con

}

答案 3 :(得分:0)

如果数组列表包含定义Nodes的{​​{1}},您可以使用:

getLocation()

你也可以定义

((Nodes)filled_data_.get(i)).getLocation()

答案 4 :(得分:0)

创建ArrayList对象时,应使用<>括号指定包含元素的类型。保持对List接口 - 而不是ArrayList类的引用也是很好的。要遍历此类集合,请使用foreach循环:

以下是Node类的示例:

public class Node {
    private int value;

    public Node(int value) {
        this.value = value;
    }

    public void setValue(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }
}

以下是Main类的示例:

public class Main {

    public static void main(String[] args) {

        List<Node> filledData = new ArrayList<Node>();
        filledData.add(new Node(1));
        filledData.add(new Node(2));
        filledData.add(new Node(3));

        for (Node n : filledData) {
            System.out.println(n.getValue());
        }
    }
}