Python 3.0 - dict методы возвращает представления - почему?

Я получил следующее решение:

.split(body().tokenize("\n", 1_000, false))
.streaming()
.process(exchange -> {
    String[] body = exchange.getIn().getBody(String.class).split("\n");
    var records = new ArrayList<FooBar>(body.length);
    for(String line: body) {
         records.add(objectMapper.readValue(line, FooBar.class));
    }
    exchange.getIn().setBody(records);
})

objectMapper - com.fasterxml.jackson.databind.ObjectMapper

Например, файл размером 3,5 ГБ был обработан за ~ 1,2 мин.

12
задан ShadowRanger 27 March 2019 в 12:43
поделиться

1 ответ

Вы эффективно получаете список. Просто не копия внутреннего списка, но что-то действует, как будто это, где список, но только представляет внутреннее состояние.

Это - тот же способ, которым это реализовано в Java (и вероятно много других языков/сред также).

Главная причина состоит в том, что для многих вариантов использования, возвращая абсолютно отдельный список является ненужным и расточительным. Это потребовало бы копирования всего содержания (который может или многие не быть много).

Если Вы просто хотите выполнить итерации по ключам, затем создающим новый список, не необходимо. И если Вам действительно нужен он как отдельный список (как копия) затем, можно легко создать тот список из представления.

13
ответ дан 26 October 2019 в 10:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: