Grundsätzlich muss ich Folgendes tun: 1) Lesen Sie die CSV-Eingabedatei. 2) Filtern Sie die CSV-Daten basierend auf der Blacklist. 3) Sortieren Sie die Eingabe basierend auf den Ländernamen in aufsteigender Reihenfolge. 4) Drucken Sie die Datensätze, die nicht auf der schwarzen Liste stehen. Die CSV-Datei enthält: id, Land-short, Land 1, AU, Australien 2, CN, China 3, AU, Australien 4, CN, China Die schwarze Liste Datei enthält: AU JP Und der gewünschte Ausgang ist 2, CN, China 4, CN, ChinaWie überprüft man den Inhalt des Stream-Objekts ohne Konvertierung in Array in Java 8?
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamProcessing {
public static void filterCsv(String fileName, String blacklistFile){
try (Stream<String> stream1 = Files.lines(Paths.get(fileName))) {
Stream<String> stream2 = Files.lines(Paths.get(blacklistFile));
Optional<String> hasBlackList = stream1.filter(s->s.contains(stream2)).findFirst();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String args[])
{
StreamProcessing sp = new StreamProcessing();
sp.filterCsv("Data.csv","blacklist.txt");
}
}
I die Einträge entfernt werden soll, die aus dem Vergleich von dem ersten Strom in der zweiten Strom vorhanden sind, ohne sie in eine Anordnung umzuwandeln?
Was genau versuchen Sie zu tun? Möchten Sie herausfinden, ob der erste Stream einen String enthält, der im zweiten Stream angezeigt wird? – Eran
Versuchen Sie einige Informationen zu der Frage hinzuzufügen, wie haben die CSV und TXT-Datei die gleiche Struktur und brauchen Sie wirklich den ersten Eintrag oder nur die Information, dass es eine "Verletzung" gibt. – meistermeier
Bitte lesen Sie http://stackoverflow.com/help/how-to-ask. Sagen Sie uns, was Sie bereits versucht haben und was nicht funktioniert. –