Ich habe eine zweidimensionale ArrayList die ich mit forEach abarbeite und bei bestimmten Elementen deren Indexnr. abspeichern möchte. In der Folge ein Code-Beispiel:
Java:
ArrayList<ArrayList<Integer>> workList =newArrayList<>();for(int i =0; i < NUMBERS; i++) workList.add(newArrayList<>());
workList.get(0).add(1);
workList.get(0).add(2);
workList.get(0).add(3);for(int value : workList.get(0)){if(value ==2)// HIER MÖCHTE ICH DEN INDEX DES ELEMENTS ERMITTELN}
Dazu brauchst du eine Variable, z.B. int counter, die du schon vorher (also außerhalb der Schleife) deklarierst. In der for-Schleife musst du dann counter++ schreiben.
Dazu brauchst du eine Variable, z.B. int counter, die du schon vorher (also außerhalb der Schleife) deklarierst. In der for-Schleife musst du dann counter++ schreiben.
Dich rettet quasi nur das Auto-Unboxing bei einem Vergleich mit einem int Literal. Beim Vergleich von zwei Integer musst du in nahezu allen Fällen immer .intValue() aufrufen - und das wird gerne vergessen.
Also die Danke-Funktion ist gut, zusätzlich Danke sagen auch... ... aber dann doch bitte nicht noch mal ein drittes Mal sich mit Doppelposting bedanken... das wird dann unübersichtlich...
Hier auch noch mal gekapselt
Java:
publicstaticvoidprintFirstSublist(List<List<Integer>> workList){// without index// workList.get(0).stream().filter(i -> i == 2).forEach(System.out::println);// with indexList<Integer> first = workList.get(0);IntStream.range(0, first.size()).filter(i -> first.get(i)==2).forEach(i ->System.out.printf("index: %s, value: %s\n", i, first.get(i)));}
Also die Danke-Funktion ist gut, zusätzlich Danke sagen auch... ... aber dann doch bitte nicht noch mal ein drittes Mal sich mit Doppelposting bedanken... das wird dann unübersichtlich...
Hier auch noch mal gekapselt
Java:
publicstaticvoidprintFirstSublist(List<List<Integer>> workList){// without index// workList.get(0).stream().filter(i -> i == 2).forEach(System.out::println);// with indexList<Integer> first = workList.get(0);IntStream.range(0, first.size()).filter(i -> first.get(i)==2).forEach(i ->System.out.printf("index: %s, value: %s\n", i, first.get(i)));}
Ich arbeite an einem Programm welches Sudoku erstellt und auch lösen kann. Bei der gestellten Frage werden die nicht mehr möglichen Ziffern aus den möglichen Ziffern der Felder entfernt. Also suchen - finden - markieren.
Ich wollte eigentlich nur hinterfragen ob es eine "elegantere" Lösung mit dem forEach - ev. Iterator - gibt,
lg heinz
Ja, es gibt eine elegantere Lösung bei Sudoku... und diese nennt sich Array -> schneller, sicherer, einfacher, robuster. Da Sudokus eine feste Länge haben sind Lists hierbei unpassend.
Ja, es gibt eine elegantere Lösung bei Sudoku... und diese nennt sich Array -> schneller, sicherer, einfacher, robuster. Da Sudokus eine feste Länge haben sind Lists hierbei unpassend.