From 1fe6ff3ce2dce9dae3df8e91eaa75d244224c722 Mon Sep 17 00:00:00 2001 From: Yanis O <oualanyanis01@gmail.com> Date: Wed, 13 Nov 2024 12:01:52 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20d'un=20iterateur=20=C3=A0=20Matrix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/util/Matrix.java | 51 +++++++++++++++++++++++++++++----- 1 file changed, 44 insertions(+), 7 deletions(-) diff --git a/src/main/java/util/Matrix.java b/src/main/java/util/Matrix.java index a2d05d6..3e4cb8e 100644 --- a/src/main/java/util/Matrix.java +++ b/src/main/java/util/Matrix.java @@ -1,21 +1,58 @@ package util; + import java.util.ArrayList; -public class Matrix<E> { +import java.util.Iterator; +import java.util.NoSuchElementException; + +public class Matrix<E> implements Iterable<E> { private ArrayList<ArrayList<E>> matrix; - public Matrix(){ + + public Matrix() { this.matrix = new ArrayList<ArrayList<E>>(); } - public E get(int x, int y){ + public E get(int x, int y) { return matrix.get(x).get(y); } - public E set(int x, int y, E object){ + + public E set(int x, int y, E object) { return matrix.get(x).set(y, object); } - public void clear(){ + + public void clear() { this.matrix = new ArrayList<ArrayList<E>>(); } - public int size(){ - return matrix != null ? matrix.get(0).size()*matrix.size() : 0; + + public int size() { + return matrix != null ? matrix.get(0).size() * matrix.size() : 0; + } + + @Override + public Iterator<E> iterator() { + return new MatrixIterator(); + } + + private class MatrixIterator implements Iterator<E> { + private int row = 0; + private int col = 0; + + @Override + public boolean hasNext() { + return row < matrix.size() && col < matrix.get(row).size(); + } + + @Override + public E next() { + if (!hasNext()) { + throw new NoSuchElementException(); + } + E element = matrix.get(row).get(col); + col++; + if (col >= matrix.get(row).size()) { + col = 0; + row++; + } + return element; + } } } -- GitLab