# Listen in Java von Dopplungen befreien

**URL:** <https://ecm.community/t/listen-in-java-von-dopplungen-befreien/80>\
**Category:** Java/Talend\
**Tags:** tip\
**Created:** [29. März 2021 um 11:11 UTC](https://ecm.community/t/listen-in-java-von-dopplungen-befreien/80 "2021-03-29T11:11:27Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![uw](https://ecm.community/user_avatar/ecm.community/uw/32/695_2.png) [@uw](https://ecm.community/u/uw)\
**Post date:** [29. März 2021 um 11:11 UTC](https://ecm.community/t/listen-in-java-von-dopplungen-befreien/80/1 "2021-03-29T11:11:27Z")

</div>

Da es vor kurzem ein Thema in einer Talend Strecke war packe ich es hier kurz rein:

# Das Problem

Aus dem Vorsystem kommt eine Komma separierte Liste (String) mit Dopplungen:  
`kunde1, kunde2, kunde3, kunde1`

Ins System soll aber `kunde1, kunde2, kunde3` importiert werden.

Dies kann man in Java 8 oder neuer verhältnismässig einfach umsetzten:

# (Eine) Lösung

```auto
// Java JDK8 braucht man glaub mindestens

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

// Liste splitten
List<String> kdNameArray = Arrays.asList(output_row.KdNameHistOld.split("\\s*,\\s*"));
// Liste filtern
List<String> distinctKdNameArray = kdNameArray.stream().sorted().distinct().collect(Collectors.toList());
// Liste zu Comma separiertem String
output_row.KdNameHistOld = String.join(",", distinctKdNameArray);

```

Hier wird die Liste erst gesplittet, dann per [stream()](https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html) durch die Befehle sorted() und distinct() sortiert und eindeutig gemacht und anschliessend per String.join wirder zu einer Komma separierten Liste zusammengebaut.
