Java ArrayList ersten Buchstaben abgleichen

Eder1309

Mitglied
Liebe Community,

ich bin ein absoulter Neuling in der Java Programmierung und hoffe, in diesem Forum einige hilfreiche Tipps von den Profis zu bekommen:).
Folgende Aufgabenstellung bereitet mir Probleme: Ich habe eine ArrayList mit 4 Namen angelegt und nun soll das Programm alle Namen entfernen, die nicht mit dem Buchstaben "E" beginnen. Mein Code sieht bisher wie folgt aus (der Fehler ist im Code kommentiert):

Wenn ich den Anfangsbuchstaben nicht mit charAt() ansprechen kann, welche Möglichkeit(en) gibt es, eine ArrayList durchzugehen und zu vergleichen, ob der jeweilige Anfangsbuchstabe des Strings mit, in diesem Fall "E", übereinstimmt?

Vielen Dank für eure Hilfe!:)

Java:
import java.util.ArrayList;

public class NamensListe {
    public static void main(String[] args) {
         ArrayList<String> list = new ArrayList<String>(3);
         list.add("Peter");
         list.add("Marlene");
         list.add("Erwin");
         list.add("Eduard");
        
        // System.out.println(list);
        
     for (int i = list.size()-1; i >= 0; i--){
        if (list.get(i).charAt(0) != "E"){       [B] / / Incompatible operand types char and String[/B]
            list.remove(i);
        }
     }
          
      
         System.out.println(list);
    }
}
 
Zuletzt bearbeitet von einem Moderator:

Robat

Top Contributor
Du hast die Möglichkeit charAt() zu nehmen. Momentan vergleichst du das Ergebnis aber mit einem String "E". Wenn du daraus ein char 'E' machst funktioniert das ganze auch ;)

PS: Du könntest auch die Methode startsWith nutzen :)
 

Eder1309

Mitglied
Oh Mann, vielen Dank. Manchmal sieht man die offensichtlichsten Fehler nicht :(

Edit: Ich bin mal so frei und poste das Ganze mit startsWith:

Java:
for (int i = list.size()-1; i >= 0; i--){
  if (list.get(i).startsWith("E")) {
    list.get(i);
  } else {
    list.remove(i);
  }
}
 
Zuletzt bearbeitet von einem Moderator:

Flown

Administrator
Mitarbeiter
Zwei Möglichkeiten:
Java:
List<String> names = List.of("Peter", "Marlene", "Erwin", "Eduard");

//Bevorzugt:
List<String> list = new ArrayList<>(names);
System.out.println(list);
list.removeIf(name -> name.startsWith("E"));
System.out.println(list);

//ODER:
List<String> iterList = new ArrayList<>(names);
System.out.println(iterList);
for(Iterator<String> iter = iterList.iterator(); iter.hasNext();) {
  String name = iter.next();
  if(name.startsWith("E")) {
    iter.remove();
  }
}
System.out.println(iterList);
 

dzim

Top Contributor
Schön, das schon jemand auf Java9 ist. Mir graust aber noch vor dem Umstieg unser im Moment grössten Anwendung... (JavaFX, benötigt leider ein paar "interne" calls - z.B. Nested Event Loop - und da hab ich es schon zwitschern hören, dass es Probleme geben wird, das auf Java9 zum Laufen zu bringen.)
 

Neue Themen


Oben