File loop -> Stream loop -> добавить в существующую коллекцию - PullRequest
0 голосов
/ 12 апреля 2019

Я просматривал следующий вопрос , но я все еще немного сбит с толку.Как я могу перебирать файлы, перебирать содержимое каждого файла, добавляя только отдельные значения из ВСЕХ файлов в один Список? Должен ли я использовать набор?

getSourceFiles возвращает LinkedHashMap из путей, которые я затем преобразовываю в объекты File

    public static void main(String[] args) throws IOException {

mapSwift = getSourceFiles(PATH_SWIFT, swiftFileName);
linkedHashSet = new LinkedHashSet();
mapSwift.forEach((k,v)-> {
        File fileName = new File(v.toString());
        try (Stream<String> stream = Files.lines(Paths.get(String.valueOf(fileName)))) {
            list = stream
                    .filter(line -> line.startsWith(":97A::SAFE//"))
                    .map(String::toUpperCase)
                    .distinct()
                    .collect(Collectors.toList());
        } catch (IOException e) {
            e.printStackTrace();
        }

    linkedHashSet.add(list);

});


    System.out.println("Done");

}
//public static LinkedHashMap<?, ?> getSourceFiles(Path dir, String strFilename)

Ожидаемый результат

File A | File B | File C
Oranges Apples Bananas
Apples  Apples Oranges

Я бы хотел, чтобы в полученном массиве или наборе были только уникальные значения из ВСЕХ файлов.В приведенном выше примере конечная структура данных будет содержать только 3 элемента: Oranges, Apples, Bananas

...