自定义集合可迭代ArrayList矩阵

时间:2018-03-28 08:01:09

标签: java matrix arraylist collections iterator

我有一个名为matrix的类,它创建了一个2d ArrayList矩阵。

public class Matrix<E> implements Iterable {

    private ArrayList<ArrayList<E>> matrix; 

}

它完全作为矩阵运行,但我需要一种方法来遍历每个内部ArrayList(行)。我的解决方案是:

public Iterator iterator() {
    Iterator<ArrayList<E>> it = this.matrix.iterator();
    return it;  
}

它正在提交网站上自动测试。 矩阵填充后的预期回报是:

[[id, IP, Ec, c, g, lU][Jb, Ud, r, OG, an, V][ef, H, WT, Zn, D, Ml][LT, bU, j, W, Sa, Kd][q, S, h, Q, P, VJ]]

我从代码中得到的是:

[idIPEccglUJbUdrOGanVefHWTZnDMlLTbUjWSaKdqShQPVJ]

有没有人可以对我的迭代器采用不同的做法有所了解?

1 个答案:

答案 0 :(得分:0)

如果我理解正确你的问题是打印你的矩阵。要克服它,您可以尝试覆盖Matrix类的toString()方法,如:

 @Override //simply calling toString on the arrayList. edit this method for custom implementation
public String toString() {
    return matrix.toString();
}

我设法使用以下代码获得您所需的结果:

 public class  App{
public static void main(String[] args) {
    List<String> a = Arrays.asList("id", "IP", "Ec", "c", "g", "lU");
    List<String> b = Arrays.asList("Jb", "Ud", "r","OG", "an", "V");
    List<String> c = Arrays.asList("ef", "H", "WT", "Zn", "D","Ml");
    List<String> d = Arrays.asList("LT", "bU", "j", "W", "Sa", "Kd");
    List<String> e = Arrays.asList("q", "S", "h", "Q", "P", "VJ");

    Matrix<String> m = new Matrix<String>();
    m.matrix = new ArrayList<ArrayList<String>>((Collection<? extends ArrayList<String>>) Arrays.asList(a, b, c, d, e));

    System.out.println(m.toString());
} }

class Matrix<E> implements Iterable<ArrayList<E>> {

public ArrayList<ArrayList<E>> matrix;

public Iterator<ArrayList<E>> iterator() {
    Iterator<ArrayList<E>> it = this.matrix.iterator();
    return it;  
}

@Override
public String toString() {
    return matrix.toString();
}
 }

上述代码执行的结果:[[id,IP,Ec,c,g,lU],[Jb,Ud,r,OG,an,V],[ef,H,WT,Zn,D,Ml ],[LT,bU,j,W,Sa,Kd],[q,S,h,Q,P,VJ]]