Как облегчить загрузку данных с помощью функционального программирования? - PullRequest
0 голосов
/ 26 мая 2020
• 1000 Я хочу проанализировать следующий текстовый файл в коллекции объектов DataSet, состоящих из объектов Item, причем каждый элемент имеет поле Size и поле Value. Каждый столбец size / val соответствует одному элементу.
length - 26, capacity 40
dataset 1:
sizes = {3, 1, 6, 10, 1, 4, 9, 1, 7, 2, 6, 1, 6, 2, 2, 4, 8, 1, 7, 3, 6, 2, 9, 5, 3, 3} 
vals =  {7, 4, 9, 18, 9, 15,4, 2, 6, 13,18,12,12,16,19,19,10,16,14,3, 14,4, 15,7, 5, 10} 

dataset 2:
sizes = {5, 3, 4, 4, 5, 9, 8, 4, 4, 9, 1, 10, 1, 10, 8, 1, 10, 9, 2, 1, 9, 8, 9, 6, 10, 9} 
vals = {15, 2, 15,18,20,14,12,5, 2, 7, 8, 20, 15,12, 18,12, 4, 9, 1, 19,13,1, 8, 13, 2, 19} 

...

Моей первой идеей было использовать функциональное программирование и потоки, но что бы я ни делал, мой код в конечном итоге трансформируется в шаблон Arrow Anti Pattern. И я не думаю, что мне следует создавать несколько небольших отдельных методов только для решения такой простой проблемы. Вот одна из моих попыток:

String data = Files.readString(Paths.get("src/resources/dataFile.txt"));
    data.lines().forEach(s -> {
        Dataset ds = new Dataset();
        if (s.startsWith("sizes")) {
            s.chars().forEach(value -> {
                if (Character.isDigit(value)) {
                    ds.getItems().add(new Item((char)value));
                }
            });
        }
        if (s.startsWith("vals")) {
            for (Item item : ds.getItems()){
                item.setValue();
            }
        }
    });

Является ли функциональное программирование подходящим инструментом для работы? Я новичок в этом, поэтому иногда это может сбивать с толку. Я уверен, что должен быть способ загрузить данные быстрее.

Ребята, вы можете подсказать, какие инструменты я могу использовать, чтобы сделать это как можно более аккуратно?

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