Replace mit Hilfe von ArrayLists

JavaKev

Mitglied
Hallo, ich habe folgende Aufgabe bekommen: Schreiben Sie eine Methode 'replaceInArrayList', welche in einer ArrayList *alle* Elemente vom Wert 'findThis' durch 'replacement' ersetzt und die resultierende Liste zurückgibt.
Nun habe ich folgenden Code geschrieben:
Java:
ArrayList<Integer> replaceInArrayList(ArrayList<Integer> arr, Integer toFind, Integer replacement){
    if (!arr.isEmpty() && arr.size() > toFind) {
        arr.set(1, replacement);
    }
    return arr;
    
}

Folgende Testfälle sind korrekt:
ArrayList<Integer> arg3 = new ArrayList<Integer>(Arrays.asList(new Integer[] {}));
System.out.println(replaceInArrayList(arg3, 2, -10));

ArrayList<Integer> arg4 = new ArrayList<Integer>(Arrays.asList(new Integer[] { 1, 2, 3 }));
System.out.println(replaceInArrayList(arg4, 2, -10));

wenn ich jetzt allerdings den Testfall :
ArrayList<Integer> arg8 = new ArrayList<Integer>(Arrays.asList(new Integer[] { 2, 2, 2, 2 }));
dann ersetzt er mir natürlich nur die Indexstelle 1. Wie bekomme ich es hin, dass er mir alle toFind durch replacement ersetzt?
 
Du musst mit einer Schleife über die Liste iterieren 😉 BTW da du mit einer Referenz arbeitest kann die Methode eine Void sein 🙂
Java:
void replaceInArrayList(ArrayList<Integer> arr, Integer toFind, Integer replacement){
    if (arr.isEmpty()) {
        return;
    }
   
    for(int i = 0; i < arr.size(); i++){
           if(arr.get(i).equals(toFind)){
                 arr.set(i, replacement);
           }
    }
}
 
Ja gut des habe ich überlesen xD

@JavaKev Das wäre dann die richtige Methode:

Java:
ArrayList<Integer> replaceInArrayList(ArrayList<Integer> arr, Integer toFind, Integer replacement){
    if (arr.isEmpty()) {
        return null;
    }
  
    for(int i = 0; i < arr.size(); i++){
           if(arr.get(i).equals(toFind)){
                 arr.set(i, replacement);
           }
    }
    return arr;
}
 
Man könnte zwar arr verändern wie von Kirby, man könnte aber auch einfach eine neue Liste erstellen.
Java:
public static ArrayList<Integer> replaceInArrayList(ArrayList<Integer> arr, Integer toFind, Integer replacement) {
    ArrayList<Integer> replacedArr = new ArrayList<>();

    for (Integer element : arr) {
        replacedArr.add(element.equals(toFind) ? replacement : element);
    }

    return replacedArr;
}
 

Neue Themen


Zurück
Oben