Wie kann ich in Java in einer Array liste 2 Namen vergleichen und mir nur die Gesamtzahl von einzigartigen Namen ausgeben lassen?
Meine Aufgabe lautet:
Erweitern Sie den Manager um eine Methode
public int numberOfMessengers(), die die Gesamtzahl an unterschiedlichen Mes-
sengern ermittelt (gleicher Name -> gleicher Messenger), die von Claudius Freun-
den verwendet werden. Butzen Sie dazu die auf der Klasse Friend implementierte
numberOfMessengers()-Methode.
Ich wollte dazu wissen , ob ich eine for schleife bauen muss , die jeden Array mit dem vorherigen vergleicht und schaut ob der Name gleich ist:
Und wie kann ich dies in eine Main Methode implentieren?
1 Antwort
Wie kann ich in Java in einer Array liste 2 Namen vergleichen und mir nur die Gesamtzahl von einzigartigen Namen ausgeben lassen?
Kurz gesagt, du möchtest eine Liste ohne doppelte Einträge haben.
a) Du legst dir eine neue Liste an, iterierst über die alte und prüfst pro Iterationsschritt, ob der aktuelle Wert in der neuen Liste bereits enthalten ist. Wenn nicht, wird der aktuelle Wert ihr zugefügt.
Pseudocode:
items = [ 1, 2, 2, 3 ]
list = []
for item in items
if list contains item
continue
push item into list
b) Nutze Set-Datenstrukturen, denn diese enthalten von sich aus keine doppelten Werte.
ArrayList<String> source = new ArrayList<>(); // your source list
Set<String> names = new HashSet<>(source);
String[] namesArray = new String[names.size()];
source = Arrays.<String>asList(names.toArray(namesArray));
c) Seit Java 8 geht es auch mit Streams:
List<String> names = source.stream().distinct().collect(Collectors.toList());