# Java ArrayList ersten Buchstaben abgleichen



## Eder1309 (27. Sep 2017)

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!


```
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);
    }
}
```


----------



## Robat (27. Sep 2017)

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 (27. Sep 2017)

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

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


```
for (int i = list.size()-1; i >= 0; i--){
  if (list.get(i).startsWith("E")) {
    list.get(i);
  } else {
    list.remove(i);
  }
}
```


----------



## Flown (27. Sep 2017)

Bitte Code in Code Tags: [code=java]//JAVA CODE HERE[/code]


----------



## Flown (27. Sep 2017)

Zwei Möglichkeiten:

```
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);
```


----------



## Robat (27. Sep 2017)

@Flown Kam List.of() mit Java 9?


----------



## Flown (27. Sep 2017)

Robat hat gesagt.:


> @Flown Kam List.of() mit Java 9?


Jap


----------



## dzim (27. Sep 2017)

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.)


----------

