Java Stream map или создать новый объект FileStream - PullRequest
0 голосов
/ 05 октября 2019

Если у меня есть файл, разделенный табуляцией, когда я использую объект BufferedReader, я могу использовать Stream Api, например методы фильтра, отображения, уменьшения и т. Д., Так что если мне нужен Stream

 //first Line is Header Identified by #
 #  SUBSTANCE   2,60    25.04.2012  00:02:48    01.01.2000  24.04.2012
 //this is my R Object which has attached two RN Objects
 R  10  -   016-053-00-8    402-460-1   0   0   0   0   0   0
 RN 10  0   DE  (C16oderC18-n-Alkyl)(C16oderC18-n-alkyl)ammonium-2-((C16oderC18-n-alkyl)(C16oderC18-n-alkyl)carbamoyl)benzolsulfonat
 RN 10  0   EN  (C16orC18-n-alkyl)(C16orC18-n-alkyl)ammonium 2-((C16orC18-n-alkyl)(C16orC18-n-alkyl)carbamoyl)benzenesulfonate

создать объект или MAP (заголовок, rObject (rnObject, rnObject)) как вложенный массив, поэтому я могу использовать Stream API для этого?

Я уже пробовал

    BufferedReader in = new BufferedReader(new FileReader(absoluteFilePath));

    List test = in.lines().limit(4).filter(identifier -> identifier.startsWith("RN")).map(line -> line.split("\\t")).collect(Collectors.toList());

Очевидно, что это не работает, так как я получаю вывод

    test.forEach(it -> System.out.println(it));
    [Ljava.lang.String;@326de728
    [Ljava.lang.String;@25618e91

Поэтому я подумал, что мог бы создать Карту с Stream Api, так что я думаю, что я хочу, чтобы это было невозможно, поэтому я мог просто создатьв то время как вы можете создавать и создавать объекты, что вы думаете?

1 Ответ

1 голос
/ 05 октября 2019

Лучше всего правильно определить список как список строк и не использовать необработанный список.

В результате разбиения получается строковый массив, который необходимо обернуть в список.

Тогда у вас будет список списка, для этого используйте flatMap, чтобы объединить весь список в уникальный, тогда вы сможете использовать коллектор и сохранить его в одном списке.

List<String> test = in.lines().limit(4).filter(identifier -> identifier.startsWith("RN")).map(line -> Arrays.asList(line.split("\\t"))).flatMap(List::stream).collect(Collectors.toList());

Основная проблема в вашем примере заключается в том, что вы хранили необработанный список объектов массивов. Поэтому, когда вы вызываете toString () в массив, вы получаете этот hashReference, начинающийся с квадратной скобки.

Надеюсь, это вам поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...