Ich habe eine Anforderung, wo ich die Java -Stream -API verwenden möchte, um einen Ereignisstrom aus einem System zu verarbeiten und einen Datenreinigungsvorgang anzuwenden, um wiederholte Ereignisse zu entfernen. Dies entfernen das gleiche Ereignis, das mehrmals nacheinander wiederholt wurde und nicht eine Liste verschiedener Ereignisse erstellt. Die meisten Beispiele für Java -Stream -API -Beispiele für Online -Ziele erstellen eine ausgeprägte Ausgabe einer bestimmten Eingabe. /> Die Ausgabeliste oder der Stream sollte < /p>
[A, B, C, A, D, C, E, F] < /p>
< /blockquote>
Meine aktuelle Implementierung (nicht verwendet) aussieht, sieht wie < /p>
wie < /p>
aus.public class Test {
public static void main(String[] args) {
String fileName = "src/main/resources/test.log";
try {
List list = Files.readAllLines(Paths.get(fileName));
LinkedList acc = new LinkedList();
for (String line: list) {
if (acc.isEmpty())
acc.add(line);
else if (! line.equals(acc.getLast()) )
acc.add(line);
}
System.out.println(list);
System.out.println(acc);
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
< /code>
Ausgabe, < /p>
[a, b, c, a, a, a, a, d, d, d, c, c, e, e, e, e, e, e, f, f, f]
[a, b, c, a, d, c, e, f]
< /code>
Ich habe verschiedene Beispiele mit Reduzierung, GroupingBy usw. ohne Erfolg ausprobiert. Ich kann keinen Weg finden, einen Stream mit dem letzten Element in meinem Akkumulator zu vergleichen, wenn es eine solche Möglichkeit gibt.
Entfernen Sie die wiederholte Sequenz von Elementen aus einer Liste ⇐ Java
-
- Similar Topics
- Replies
- Views
- Last post