2D array ou arraylist reffering to excel chells

J'ai une feuille excel, disons:

entrez la description de l'image ici

Notez que chaque ligne et colonne a son propre nom K, L … et A, B …. Notez également que chaque cellule a la forme (int, int, int, int) qui, autant que je sais, est bien représentée avec un arraylist. Quelle est la meilleure façon de faire face à cela? Définir un tableau 2D d'arraylists; Ou un arraylist d'arraylists; Ou en utilisant des maps hash; Je trouve plus simple d'utiliser un tableau 2D d'arraylists pour exécuter des loops, mais je dois initialiser chaque élément de tableau 2D en tant qu'arraylist (ou non); Notez que c'est une grande feuille excel (plus de 2500 cellules). Merci d'avance.

Si vous avez besoin d'un access random rapide, vous pouvez utiliser HashMap avec des keys de cellule.

 public class CellKey { final Ssortingng col; final Ssortingng row; private CellKey () {} // no instatiation outside public CellKey at(Ssortingng row, Ssortingng column) { this.col = column; this.row = row; } public getColumn() { return col; } public getRow() { return row; } public int hashCode() { return Objects.hash(col, row); } public boolean equals(CellKey other) { return this.col.equals(other.col) && this.row.equals(other.row); } } 

Maintenant, utilisez-le dans la collection représentant les valeurs de la cellule:

 Map<CellKey, List<Integer>> cells = new HashMap<>(); // get value cells.get(CellKey.at(row, column)); // put value cells.put(CellKey.at(row, column), value); cells.put(CellKey.at(row, column), Arrays.asList(int1, int2, int3)); // check if value exists cells.contains(CellKey.at(row, column)); // iterate over all cells containing values cells.entrySet().stream().forEach(e -> { Ssortingng row = e.getKey().getRow(); Ssortingng column = e.getKey().getColumn(); List<Integer> value = e.getValue(); // make your actions }); // iterate over given row Ssortingng row = "K"; Ssortingng[] columns = new Ssortingng[]{"A", "B", "C", "D"}; for (Ssortingng c : columns) { List<Integer> values = cells.get(CellKey.at(row, c)); // perform actions }