У меня есть ситуация, когда я читаю базу данных и возвращаю List<String>
, где каждая строка выбирается и добавляется в список в соответствии с некоторыми критериями. Сигнатура метода:
public List<String> myMethod(String query, int limit)
Второй параметр обеспечивает верхнюю границу размера возвращаемого списка (установка limit=-1
снимет любое ограничение размера). Чтобы избежать интенсивного использования памяти этим методом, я написал эквивалентный метод, который возвращает Stream<String>
вместо списка. ( Примечание. Мне не нужен произвольный доступ к возвращаемым элементам или любая другая функциональность, связанная со списком. )
Однако я немного скептически отношусь к возврату Stream<>
, тем более, что этот метод общедоступен. Безопасно ли иметь общедоступный метод, возвращающий Stream<>
в Java?
Iterator<ResultSet>
в своем коде. СделатьStream
изIterator
довольно просто. - person OldCurmudgeon   schedule 15.01.2015Stream
, вы получитеIterator
почти бесплатно (stream.iterator()
). - person Marko Topolnik   schedule 15.01.2015Iterator
в Java 8. - person OldCurmudgeon   schedule 15.01.2015Iterator
неCloseable
, и это вызывает некоторые головные боли для итераторов, поддерживаемых вводом-выводом. - person Marko Topolnik   schedule 15.01.2015