Приведет ли использование потока java для фильтрации больших наборов данных к снижению производительности? - PullRequest
0 голосов
/ 01 апреля 2020

Предположим, у меня есть сотни тысяч данных для обработки.

И мой класс выглядит как

public class Group
{
   String id;
   String name;
}

И список этих групп.

List<Group> groups = new Arraylist<>();

Я хочу убедиться, что у меня нет групп в этом списке без названия.

Так что я могу вспомнить два подхода

  1. Когда я перебираю данные, я могу решить, помещать ли это в этот список для начала

  2. Я могу просто сохранить код простым, пока мне не нужно отфильтровать список в самом конце.

Вариант 2 будет выглядеть примерно так:

groups.stream.filter(g -> !StringUtils.isBlank(g.name)).collect(Collectors.toList());

Есть ли предпочтительный способ сделать это? Плюсы и минусы? Вариант 2 заставит мой код выглядеть намного чище, однако я волнуюсь, потому что набор данных может быть довольно большим, а обход большого списка может привести к снижению производительности.

1 Ответ

0 голосов
/ 02 апреля 2020

Мое мнение:
Я бы порекомендовал # 1, чтобы не тратить память на нерелевантные данные.
Хорошо, что он также работает лучше.

Но только потому, что вы говорите о «довольно больших» («сотнях тысяч»). Для небольших списков ясность кода может быть более желательной. Если список может быть маленьким или большим, используйте большой код, иначе перегрузка памяти и / или производительность могут убить / заморозить приложение.

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