{"id":340475,"date":"2022-10-30T21:00:28","date_gmt":"2022-10-30T21:00:28","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=340475"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=340475","title":{"rendered":"<span>Java Stream API #\u043d\u0435\u041e\u043f\u044f\u0442\u044c\u0410\u0421\u043d\u043e\u0432\u0430 #javaJunior #java8<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><em>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f, \u043a\u0430\u043a \u0438 \u0432\u0441\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u2013 \u043c\u043e\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u043d\u0438\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f Java. \u0417\u0434\u0435\u0441\u044c \u0442\u0435\u0437\u0438\u0441\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u043d\u0430 \u0432\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e \u0442\u0435\u043c\u0435 \u0438 \u0442\u0435 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043c\u043d\u0435 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u0430\u0447\u043d\u044b\u043c\u0438 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c\u0438. \u042d\u0442\u043e \u043c\u043e\u0439 \u043a\u043e\u043d\u0441\u043f\u0435\u043a\u0442, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435.<\/em><\/p>\n<p><em>\u0421\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u0442\u0435\u043c, \u043a\u0442\u043e \u0438\u0437\u0443\u0447\u0430\u0435\u0442 \u0438\u043b\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u044b Java Core.<br \/>\u0418 \u0442\u0435\u043c, \u043a\u0442\u043e \u0433\u043e\u0442\u043e\u0432\u0438\u0442\u0441\u044f \u043a <\/em><strong><em>\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e<\/em><\/strong><em>.<\/p>\n<p>\u041d\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438, \u043e\u0442\u043a\u0443\u0434\u0430 \u0447\u0435\u0440\u043f\u0430\u043b\u0430\u0441\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0441\u0441\u044b\u043b\u043a\u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0430\u0442\u044c\u0438.<\/em><\/p>\n<h2>\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/h2>\n<ul>\n<li>\n<p><a href=\"#%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5%20%D0%BF%D0%BE%D0%BD%D1%8F%D1%82%D0%B8%D1%8F\" rel=\"noopener noreferrer nofollow\">\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20Stream&lt;T>&#187; rel=&#187;noopener noreferrer nofollow&#187;>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Stream&lt;T><\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%A1%D1%82%D1%80%D0%B8%D0%BC%20%D0%BF%D1%80%D0%B8%D0%BC%D0%B8%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D1%85%20%D1%82%D0%B8%D0%BF%D0%BE%D0%B2\" rel=\"noopener noreferrer nofollow\">\u0421\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C%20Stream\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c Stream<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8%20%D0%BD%D0%B0%D0%B4%20Stream\" rel=\"noopener noreferrer nofollow\">\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 Stream<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%9F%D1%80%D0%BE%D0%BC%D0%B5%D0%B6%D1%83%D1%82%D0%BE%D1%87%D0%BD%D1%8B%D0%B5%20%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8\" rel=\"noopener noreferrer nofollow\">Intermediate \u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%9A%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D1%8B%D0%B5%20%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8\" rel=\"noopener noreferrer nofollow\">Terminal \u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F%20%D1%81%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F\" rel=\"noopener noreferrer nofollow\">\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f Stream.reduce()<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%9A%D0%BB%D0%B0%D1%81%D1%81%20Optional\" rel=\"noopener noreferrer nofollow\">\u041a\u043b\u0430\u0441\u0441 Optional<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%9A%D0%BB%D0%B0%D1%81%D1%81%20Collectors\" rel=\"noopener noreferrer nofollow\">\u041a\u043b\u0430\u0441\u0441 Collectors<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA%20%D1%81%D1%81%D1%8B%D0%BB%D0%BE%D0%BA\" rel=\"noopener noreferrer nofollow\">\u0421\u043f\u0438\u0441\u043e\u043a \u0441\u0441\u044b\u043b\u043e\u043a<\/a><\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5%20%D0%BF%D0%BE%D0%BD%D1%8F%D1%82%D0%B8%D1%8F\" id=\"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f\"><\/a><\/p>\n<h2>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f<\/h2>\n<p>\u0421 \u0432\u044b\u0445\u043e\u0434\u043e\u043c <strong>Java 8<\/strong> \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 <strong>\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/strong>.<br \/>\u0421\u0442\u0430\u043b\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u043e\u0432\u0430\u0442\u044c <strong>\u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439<\/strong> \u043d\u0430\u0434 \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<blockquote>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u0301\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0301\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u2014\u00a0<strong>\u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/strong>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0442\u0440\u0430\u043a\u0442\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a <strong>\u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0439<\/strong> \u0432 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445\u00a0(\u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043a\u0430\u043a \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0432 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438).<\/p>\n<\/blockquote>\n<p>\u041f\u0430\u043a\u0435\u0442 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/package-summary.html\" rel=\"noopener noreferrer nofollow\"><strong>java.util.stream<\/strong><\/a> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043b\u0430\u0441\u0441\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0442\u0438\u043b\u0435. \u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0435\u0439, \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0439 \u0432 \u044d\u0442\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0435, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <strong>\u041f\u043e\u0442\u043e\u043a<\/strong>.<\/p>\n<p><strong>Stream API<\/strong> \u2013 \u043f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e <strong>\u043f\u043e\u0442\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445<\/strong> \u0438 <strong>\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435<\/strong> <strong>\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/strong> \u043d\u0430\u0434 \u043d\u0438\u043c\u0438.<\/p>\n<p>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/Stream.html\" rel=\"noopener noreferrer nofollow\"><strong>Stream<\/strong><\/a>, <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/IntStream.html\" rel=\"noopener noreferrer nofollow\"><strong>IntStream<\/strong><\/a>, <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/LongStream.html\" rel=\"noopener noreferrer nofollow\"><strong>LongStream<\/strong><\/a> \u0438 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/DoubleStream.html\" rel=\"noopener noreferrer nofollow\"><strong>DoubleStream<\/strong><\/a> \u2013 \u044d\u0442\u043e \u043f\u043e\u0442\u043e\u043a\u0438 <strong>\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432<\/strong> \u0438 <strong>\u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0445<\/strong> <strong>\u0442\u0438\u043f\u043e\u0432<\/strong> <code>int<\/code>, <code>long<\/code> \u0438 <code>double<\/code>.<\/p>\n<p><a class=\"anchor\" name=\"%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20Stream&lt;T>&#187; id=&#187;\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Stream&lt;T>&#187;><\/a><\/p>\n<h2>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Stream&lt;T><\/h2>\n<pre><code class=\"java\">public interface Stream&lt;T> extends BaseStream&lt;T,Stream&lt;T>><\/code><\/pre>\n<p>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<strong> <\/strong><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/Stream.html\" rel=\"noopener noreferrer nofollow\"><strong>Stream<\/strong><\/a> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 <strong>\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435<\/strong> \u0438 <strong>\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0435<\/strong> \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<blockquote>\n<p>\u041a \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043d\u044b\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u00a0\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 <strong>\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u0432\u044b\u0431\u043e\u0440\u043a\u043e\u0439<\/strong>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0447\u0438\u0441\u043b\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438 \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0432\u044b\u0431\u043e\u0440\u043a\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439.<\/p>\n<\/blockquote>\n<p>Stream <strong>\u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442<\/strong> \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0434\u043b\u044f <strong>\u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430<\/strong> \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c \u0438\u043b\u0438 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043c\u0438. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043e\u043d <strong>\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442<\/strong> <strong>\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a<\/strong> \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 <strong>\u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430\u0434 \u044d\u0442\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438.<\/p>\n<p><a class=\"anchor\" name=\"%D0%A1%D1%82%D1%80%D0%B8%D0%BC%20%D0%BF%D1%80%D0%B8%D0%BC%D0%B8%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D1%85%20%D1%82%D0%B8%D0%BF%D0%BE%D0%B2\" id=\"\u0421\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432\"><\/a><\/p>\n<h2>\u0421\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432<\/h2>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0442\u0440\u0435\u043c\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432 \u2013\u00a0<code>int<\/code><em>, <\/em><code>long<\/code>\u00a0\u0438\u00a0<code>double<\/code>\u00a0\u2013 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/package-summary.html\" rel=\"noopener noreferrer nofollow\"><strong>java.util.stream<\/strong><\/a><strong> <\/strong>\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0442\u0440\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u0438\u043c\u0430 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432:<\/p>\n<p><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/IntStream.html\" rel=\"noopener noreferrer nofollow\"><strong>IntStream<\/strong><\/a><\/p>\n<pre><code class=\"java\">public interface IntStream extends BaseStream&lt;Integer,IntStream><\/code><\/pre>\n<p><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/LongStream.html\" rel=\"noopener noreferrer nofollow\"><strong>LongStream<\/strong><\/a><\/p>\n<pre><code class=\"java\">public interface LongStream extends BaseStream&lt;Long,LongStream><\/code><\/pre>\n<p><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/DoubleStream.html\" rel=\"noopener noreferrer nofollow\"><strong>DoubleStream<\/strong><\/a><\/p>\n<pre><code class=\"java\">public interface DoubleStream extends BaseStream&lt;Double,DoubleStream><\/code><\/pre>\n<p><strong>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0430 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 <\/strong><code>mapToInt(), mapToDouble(), mapToLong()<\/code><\/p>\n<pre><code class=\"java\">List&lt;Integer> numbers = new ArrayList&lt;>();  numbers.stream().mapToInt(value -> value);  numbers.stream().mapToDouble(value -> value);          numbers.stream().mapToLong(value -> value);<\/code><\/pre>\n<p>\u0421\u0442\u0440\u0438\u043c\u044b \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043c\u0435\u044e\u0442 \u0440\u044f\u0434 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <strong>\u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d <\/strong>\u0438 <strong>\u0441\u0443\u043c\u043c\u0430<\/strong> \u0432\u0441\u0435\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u0442\u043e\u043a\u0430. <\/p>\n<p>\u041c\u0435\u0442\u043e\u0434\u044b \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f\u00a0<strong>IntStream<\/strong>\u00a0\u0438\u00a0<strong>LongStream<\/strong>.<br \/>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0438\u043c\u0430 \u0438\u0437 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0447\u0438\u0441\u0435\u043b:<\/p>\n<p><code>range(int\u00a0startInclusive, int\u00a0endExclusive)<br \/><\/code><br \/><code>rangeClosed(int\u00a0startInclusive, int\u00a0endInclusive)<\/code><\/p>\n<p>\u0412  \u043c\u0435\u0442\u043e\u0434\u0435 <code>range()<\/code>\u0432\u0442\u043e\u0440\u043e\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043c\u0435\u0442\u043e\u0434\u0430\u00a0<strong>\u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442<\/strong> \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0447\u0438\u0441\u0435\u043b, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u043c\u0435\u0442\u043e\u0434 <code>rangeClosed()<\/code> <strong>\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442<\/strong> \u0435\u0433\u043e \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d.\u00a0<\/p>\n<p><a class=\"anchor\" name=\"%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C%20Stream\" id=\"\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c Stream\"><\/a><\/p>\n<h2>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Stream<\/h2>\n<p>\u041f\u043e\u0442\u043e\u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p>Stream \u0438\u0437 <strong>List<\/strong><\/p>\n<pre><code class=\"java\">List&lt;String> list = new ArrayList&lt;>();  list.stream();  list.parallelStream();           \/\/ \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a<\/code><\/pre>\n<p>Stream \u0438\u0437 <strong>Map<\/strong><\/p>\n<pre><code class=\"java\">Map&lt;String, String> map = new HashMap&lt;>();  map.entrySet().stream();  map.values().stream();<\/code><\/pre>\n<p>Stream \u0438\u0437 <strong>\u043c\u0430\u0441\u0441\u0438\u0432\u0430<\/strong>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <strong>\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 <\/strong>\u043c\u0435\u0442\u043e\u0434<strong> <\/strong>\u043a\u043b\u0430\u0441\u0441\u0430<strong> Arrays<\/strong><\/p>\n<pre><code class=\"java\">String[] array = new String[10];  Arrays.stream(array);<\/code><\/pre>\n<p>Stream \u0438\u0437 <strong>\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432<\/strong>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <strong>\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 <\/strong>\u043c\u0435\u0442\u043e\u0434\u044b<strong> \u041a\u043b\u0430\u0441\u0441\u043e\u0432-\u043f\u043e\u0442\u043e\u043a\u043e\u0432<\/strong><\/p>\n<pre><code class=\"java\">Stream.of(\"a\", \"b\", \"c\");        \/\/ \u043f\u043e\u0442\u043e\u043a \u0438\u0437 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432  Stream.of(array);                \/\/ \u043f\u043e\u0442\u043e\u043a \u0438\u0437 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0430  Stream.of(list);                 \/\/ \u043f\u043e\u0442\u043e\u043a \u0438\u0437 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043f\u0438\u0441\u043a\u0430 List  Stream.generate(Math::random);   \/\/ \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u0430 \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b  Stream.concat(stream1, stream2); \/\/ \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0434\u0432\u0430 \u043f\u043e\u0442\u043e\u043a\u0430 \u0432 \u043e\u0434\u0438\u043d  IntStream.range(1, 10);          \/\/ \u043f\u043e\u0442\u043e\u043a \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0447\u0438\u0441\u0435\u043b \u043e\u0442 1 \u0434\u043e 9  IntStream.rangeClosed(1, 10);    \/\/ \u043f\u043e\u0442\u043e\u043a \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0447\u0438\u0441\u0435\u043b \u043e\u0442 1 \u0434\u043e 10<\/code><\/pre>\n<p>Stream \u0438\u0437 <strong>\u0441\u0442\u0440\u043e\u043a<\/strong> <strong>\u0431\u0443\u0444\u0435\u0440\u0430 BufferedReader<\/strong><\/p>\n<pre><code class=\"java\">BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));  bufferedReader.lines();<\/code><\/pre>\n<p>Stream \u0438\u0437 <strong>\u0441\u0442\u0440\u043e\u043a \u0444\u0430\u0439\u043b\u0430<\/strong> \u0447\u0435\u0440\u0435\u0437 <strong>\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439<\/strong> <strong>\u043c\u0435\u0442\u043e\u0434<\/strong> \u043a\u043b\u0430\u0441\u0441\u0430 <strong>Files<\/strong><\/p>\n<pre><code class=\"java\">Path path = Path.of(\"\/root\/test.txt\");  Files.lines(path);<\/code><\/pre>\n<p>Stream \u0438\u0437 <strong>\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445<\/strong> <strong>\u0447\u0438\u0441\u0435\u043b Random<\/strong><\/p>\n<pre><code class=\"java\">Random random = new Random();  random.ints();  random.longs();  random.doubles();<\/code><\/pre>\n<p><a class=\"anchor\" name=\"%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8%20%D0%BD%D0%B0%D0%B4%20Stream\" id=\"\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 Stream\"><\/a><\/p>\n<h2>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 Stream<\/h2>\n<p>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 <strong>\u043f\u043e\u0442\u043e\u043a\u043e\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432<\/strong> \u0431\u044b\u0432\u0430\u044e\u0442:<\/p>\n<ul>\n<li>\n<p><strong>Intermediate<\/strong> \u2013 \u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435<br \/>\u041d\u0435 \u043c\u0435\u043d\u044f\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0434\u0430\u044e\u0442 <strong>\u043b\u043e\u0433\u0438\u043a\u0443<\/strong> \u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<br \/>\u0421 \u0438\u0445 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e <strong>\u0446\u0435\u043f\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 <\/strong>\u043d\u0430\u0434 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>Terminal<\/strong> \u2013 \u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0435<br \/><strong>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442<\/strong> \u0432\u0441\u044e \u0446\u0435\u043f\u044c \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, <strong>\u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0442<\/strong> <strong>\u043f\u043e\u0442\u043e\u043a<\/strong> \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 <strong>\u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435<\/strong> \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 <strong>\u041d\u0415 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f<\/strong> \u0431\u0435\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0445.<br \/>\u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0442\u0440\u0438\u043c <strong>\u043d\u0435\u043b\u044c\u0437\u044f<\/strong> <strong>\u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c<\/strong>.<\/p>\n<p>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043a\u0430\u043a <strong>\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e<\/strong>, \u0442\u0430\u043a \u0438 <strong>\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e<\/strong>.<br \/>\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0441\u0442\u0440\u0438\u043c \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439, \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <code>parallel()<\/code><\/p>\n<pre><code class=\"java\">Stream&lt;String> stream = list.stream();  stream.parallel();<\/code><\/pre>\n<p><a class=\"anchor\" name=\"%D0%9F%D1%80%D0%BE%D0%BC%D0%B5%D0%B6%D1%83%D1%82%D0%BE%D1%87%D0%BD%D1%8B%D0%B5%20%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8\" id=\"\u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438\"><\/a><\/p>\n<h2>\u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. Intermediate<\/h2>\n<p>\u0414\u0430\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0443\u0434\u043e\u0431\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043a\u0430\u043a <strong>\u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435<\/strong> \u2013 \u043e\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u0441\u044f \u043a\u043e\u0433\u0434\u0430 \u0438\u0445 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043d\u0430\u0434 \u0441\u0442\u0440\u0438\u043c\u043e\u043c.<\/p>\n<p><strong>\u041f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u043d\u0430\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c <\/strong><code>peek()<br \/><\/code>\u0410\u043d\u0430\u043b\u043e\u0433 <code>forEach()<\/code>, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 (<strong>\u043d\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439<\/strong>)<br \/>\u0415\u0441\u043b\u0438 \u0432 \u043c\u0435\u0442\u043e\u0434 <code>peek()<\/code> \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>System.out::println<\/code>, \u0442\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0432 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0442\u043e\u043a.<\/p>\n<pre><code class=\"java\">Stream.of(\"a\", \"b\", \"c\").peek(System.out::println);<\/code><\/pre>\n<p><strong>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 <\/strong><code>map()<br \/><\/code>\u041c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439.<\/p>\n<pre><code class=\"java\">Stream.of(1, 2, 3).map((x) -> String.valueOf(x));  Stream.of(1, 2, 3).map(String::valueOf);        \/\/ \u043b\u044f\u043c\u0431\u0434\u0430 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435  Stream.of(\"1\", \"2\", \"3\").map(Integer::parseInt);<\/code><\/pre>\n<p><strong>\u041e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b  <\/strong><code>filter()<\/code><\/p>\n<pre><code class=\"java\">Stream.of(1, 2, 3, 4, 5).filter(n -> n &lt; 4);    \/\/ [1, 2, 3]<\/code><\/pre>\n<p><strong>\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b<\/strong> <code>distinct()<\/code><\/p>\n<pre><code class=\"java\">Stream.of(1, 2, 3, 2, 4, 2, 5).distinct();      \/\/ [1, 2, 3, 4, 5]<\/code><\/pre>\n<p><strong>\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430<\/strong> \u0438 <strong>\u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 <\/strong><code>sorted()<\/code><\/p>\n<pre><code class=\"java\">Stream.of(4, 2, 3, 5, 1).sorted();              \/\/ [1, 2, 3, 4, 5]  Stream.of(4, 2, 3, 5, 1).sorted(Comparator.reverseOrder())<\/code><\/pre>\n<p><strong>\u041b\u0438\u043c\u0438\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 <\/strong><code>limit()<\/code><\/p>\n<pre><code class=\"java\">Stream.of(1, 2, 3, 4, 5, 6).limit(3);            \/\/ [1, 2, 3]<\/code><\/pre>\n<p><strong>\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b<\/strong> <code>skip()<\/code><\/p>\n<pre><code class=\"java\">Stream.of(1, 2, 3, 4, 5).skip(2);                \/\/ [3, 4, 5]<\/code><\/pre>\n<p><strong>\u0421\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0442\u043e\u043a \u0441 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u043c \u043f\u043e\u0442\u043e\u043a\u043e\u043c<\/strong> <code>flatMap()<br \/><\/code>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <strong>\u043f\u043e\u0442\u043e\u043a<\/strong>, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0437\u0430\u043c\u0435\u043d\u044b \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c <strong>\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e<\/strong> \u043f\u043e\u0442\u043e\u043a\u0430, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0443\u0442\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 <strong>\u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/strong> <strong>\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f<\/strong> \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443.<\/p>\n<pre><code class=\"java\">List&lt;String> petNames = person.stream()         .flatMap(person -> person.getPetName().stream())         .collect(Collectors.toList());  System.out.println(petNames);             \/\/ [pet1, pet2, pet3, pet4, pet5]<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0434\u0432\u0443\u0445\u043c\u0435\u0440\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432<\/p>\n<pre><code class=\"java\">Integer[][] array2d = new Integer[][] {                 {1, 2, 3},                 {4, 5} };  Arrays.stream(array2d).flatMap(Arrays::stream);    \/\/ [1, 2, 3, 4, 5]<\/code><\/pre>\n<p><a class=\"anchor\" name=\"%D0%9A%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D1%8B%D0%B5%20%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8\" id=\"\u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438\"><\/a><\/p>\n<h2>\u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. Terminal<\/h2>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0432\u0441\u044e <strong>\u0446\u0435\u043f\u044c<\/strong> <strong>\u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439<\/strong> \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u043f\u043e\u0442\u043e\u043a.<\/p>\n<p><strong>\u0421\u043e\u0431\u0440\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u043e\u0442\u043e\u043a\u0430 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043a \u043d\u0443\u0436\u043d\u043e\u043c\u0443 \u0442\u0438\u043f\u0443<\/strong> <code>collect()<br \/><\/code>\u0412 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043c\u0435\u0442\u043e\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 <a href=\"#%D0%9A%D0%BB%D0%B0%D1%81%D1%81%20Collectors\" rel=\"noopener noreferrer nofollow\"><strong>Collector<\/strong><\/a><strong>.<\/strong><\/p>\n<p>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a \u0432 <strong>List<\/strong> <code>Collectors.toList()<\/code><\/p>\n<pre><code class=\"java\">List&lt;String> collect = Stream.of(\"a\", \"b\", \"c\").collect(Collectors.toList());<\/code><\/pre>\n<p>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 <strong>String<\/strong> <code>Collectors.joining()<\/code><\/p>\n<pre><code class=\"java\">String collect = Stream.of(\"a\", \"b\", \"c\").collect(Collectors.joining());<\/code><\/pre>\n<p><strong>\u0418\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443<\/strong> <code>forEach()<\/code><\/p>\n<pre><code class=\"java\">Stream.of(\"a\", \"b\", \"c\").forEach(System.out::println);<\/code><\/pre>\n<p><strong>\u0423\u0437\u043d\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u0442\u0440\u0438\u043c\u0430<\/strong> <code>count()<\/code><\/p>\n<pre><code class=\"java\">Stream.of(\"a\", \"b\", \"c\").count();<\/code><\/pre>\n<p><strong>\u041d\u0430\u0439\u0442\u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/strong> <code>min()<\/code> \u0438 <code>max()<br \/><\/code>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <strong>Comparator<\/strong>.<br \/>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 <a href=\"#%D0%9A%D0%BB%D0%B0%D1%81%D1%81%20Optional\" rel=\"noopener noreferrer nofollow\"><strong>Optional<\/strong><\/a><strong> <\/strong>\u2013<strong> <\/strong>\u043e\u0431\u044a\u0435\u043a\u0442-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c <code>null<\/code>.<strong><br \/><\/strong>\u041c\u0435\u0442\u043e\u0434 <code>get()<\/code> \u2013\u00a0 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 <strong>Optional<\/strong>.<\/p>\n<pre><code class=\"java\">Optional&lt;Integer> max = Stream.of(4, 2, 3, 5, 1)         .max(Comparator.naturalOrder());  Integer maximum = max.get();  Integer minimum = Stream.of(4, 2, 3, 5, 1)         .min(Comparator.naturalOrder())         .get();<\/code><\/pre>\n<p><strong>Comparator<\/strong> \u0443\u0434\u043e\u0431\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c<strong> <\/strong>\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <strong>\u043b\u044f\u043c\u0431\u0434\u0430-\u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/strong>:<\/p>\n<pre><code class=\"java\">Stream.of(\"a\", \"bb\", \"ccc\")         .min((s1, s2) -> s1.length() - s2.length())         .get();  Stream.of(\"a\", \"bb\", \"ccc\")         .max(Comparator.comparingInt(String::length))         .get();<\/code><\/pre>\n<p><strong>\u041d\u0430\u0439\u0442\u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442<\/strong> <code>findFirst()<br \/><\/code>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <strong>\u043f\u0435\u0440\u0432\u044b\u0439<\/strong> \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u0437 \u0441\u0442\u0440\u0438\u043c\u0430 \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f.<br \/>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 <strong>Optional.<\/strong><\/p>\n<pre><code class=\"java\">Stream.of(1, 2, 3, 4, 5)         .filter(e -> e % 2 == 0)         .findFirst()         .get();<\/code><\/pre>\n<p><strong>\u041d\u0430\u0439\u0442\u0438 \u043b\u044e\u0431\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442<\/strong> <code>findAny()<br \/><\/code>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <strong>\u043b\u044e\u0431\u043e\u0439 <\/strong>\u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u0437 \u0441\u0442\u0440\u0438\u043c\u0430 \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f.<br \/>\u0410\u043d\u0430\u043b\u043e\u0433 \u043c\u0435\u0442\u043e\u0434\u0430 <code>findFirst()<\/code>\u0434\u043b\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f <strong>\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e<\/strong>.<br \/>\u041d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <strong>\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439<\/strong> \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443 \u0432 \u043f\u043e\u0442\u043e\u043a\u0435.<\/p>\n<pre><code class=\"java\">Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)         .filter(e -> e % 2 == 0)         .parallel()         .findAny()         .get();<\/code><\/pre>\n<p><strong>\u0412\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u044e<\/strong> <code>allMatch()<\/code><\/p>\n<pre><code class=\"java\">Stream.of(1, 2, 3, 4, 5).allMatch(e -> e > 0);     \/\/ true<\/code><\/pre>\n<p><strong>\u0412\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u041d\u0415 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u044e<\/strong> <code>noneMatch()<\/code><\/p>\n<pre><code class=\"java\">Stream.of(1, 2, 3, 4, 5).noneMatch(e -> e > 0);    \/\/ false<\/code><\/pre>\n<p><strong>\u0425\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u044e<\/strong> <code>anyMatch()<\/code><\/p>\n<pre><code class=\"java\">Stream.of(1, 2, 3, 4, 5).anyMatch(e -> e > 4);     \/\/ true<\/code><\/pre>\n<p><strong>\u0421\u0443\u043c\u043c\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u0442\u0440\u0438\u043c\u0430 <\/strong><code>sum()<br \/><\/code>\u042d\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u043a\u043b\u0430\u0441\u0441\u043e\u0432-\u0441\u0442\u0440\u0438\u043c\u043e\u0432 <strong>\u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0445<\/strong> <strong>\u0442\u0438\u043f\u043e\u0432<\/strong> \u0434\u0430\u043d\u043d\u044b\u0445:<br \/><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/IntStream.html\" rel=\"noopener noreferrer nofollow\"><strong>IntStream<\/strong><\/a>, <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/LongStream.html\" rel=\"noopener noreferrer nofollow\"><strong>LongStream<\/strong><\/a> \u0438 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/DoubleStream.html\" rel=\"noopener noreferrer nofollow\"><strong>DoubleStream<\/strong><\/a><\/p>\n<pre><code class=\"java\">List&lt;Integer> integers = new ArrayList&lt;>();  integers.stream()         .mapToInt(i -> i)         .sum();<\/code><\/pre>\n<p><a class=\"anchor\" name=\"%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F%20%D1%81%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F\" id=\"\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f\"><\/a><\/p>\n<h2>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f Stream.reduce()<\/h2>\n<p>\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <strong>\u043e\u0434\u0438\u043d \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/strong> \u0438\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, <strong>\u043d\u0435\u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e<\/strong> \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044f <strong>\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e<\/strong> <strong>\u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/strong> \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p><strong>\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f:<\/strong><\/p>\n<ul>\n<li>\n<p><strong>Identity<\/strong> &#8212; \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <strong>\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c<\/strong> \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c <strong>\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e<\/strong>, \u0435\u0441\u043b\u0438 \u043f\u043e\u0442\u043e\u043a <strong>\u043f\u0443\u0441\u0442<\/strong>.<\/p>\n<\/li>\n<li>\n<p><strong>Accumulator<\/strong> &#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430: <strong>\u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/strong> \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438 <strong>\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u043e\u0442\u043e\u043a\u0430<\/strong><\/p>\n<\/li>\n<li>\n<p><strong>Combiner<\/strong> &#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u0434\u043b\u044f <strong>\u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f<\/strong> <strong>\u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0433\u043e<\/strong> <strong>\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430<\/strong> \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0438 <strong>\u0442\u0438\u043f\u0430\u043c\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430<\/strong>.<br \/>\u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c <strong>\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435<\/strong> \u043f\u043e\u0442\u043e\u043a\u0438, <strong>\u0442\u0438\u043f\u044b<\/strong> \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0438 <strong>\u0442\u0438\u043f\u044b<\/strong> \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <strong>\u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442<\/strong> \u2013<strong> \u043d\u0443\u0436\u043d\u043e<\/strong> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <strong>Combiner<\/strong>.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0421\u0443\u043c\u043c\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043f\u0438\u0441\u043a\u0430<\/strong><\/p>\n<pre><code class=\"java\">List&lt;Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);  int sum = numbers.stream()         .reduce(0, Integer::sum);  int sum2 = numbers.stream()         .reduce(0, (subtotal, element) -> subtotal + element);<\/code><\/pre>\n<p><strong>\u0421\u0443\u043c\u043c\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435<\/strong><br \/>\u0412 \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u043b\u044f <strong>\u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f<\/strong> <strong>\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432<\/strong> \u043f\u043e\u0434\u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0432 \u043e\u0434\u0438\u043d \u2013 \u044d\u0442\u043e \u0440\u043e\u043b\u044c <strong>Combiner<\/strong> \u041a\u043e\u043c\u0431\u0438\u043d\u0430\u0442\u043e\u0440\u0430<strong>.<br \/><\/strong>\u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044d\u0442\u0443 \u0440\u043e\u043b\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 <code>Integer::sum<\/code><\/p>\n<pre><code class=\"java\">int sum = numbers         .parallelStream()         .reduce(0, (a, b) -> a + b, Integer::sum);  int sum2 = ages         .parallelStream()         .reduce(0, Integer::sum, Integer::sum);<\/code><\/pre>\n<p><strong>\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u0442\u0440\u043e\u043a \u0432 \u043e\u0434\u043d\u0443 \u0441\u0440\u043e\u043a\u0443<\/strong><\/p>\n<pre><code class=\"java\">List&lt;String> letters = Arrays.asList(\"a\", \"b\", \"c\", \"d\", \"e\");  String result = letters.stream()         .reduce(\"\", String::concat);  String result2 = letters.stream()         .reduce(\"\", (partialString, element) -> partialString + element);<\/code><\/pre>\n<p><a class=\"anchor\" name=\"%D0%9A%D0%BB%D0%B0%D1%81%D1%81%20Optional\" id=\"\u041a\u043b\u0430\u0441\u0441 Optional\"><\/a><\/p>\n<h2>\u041a\u043b\u0430\u0441\u0441 Optional<\/h2>\n<p>\u041c\u0435\u0442\u043e\u0434\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 <strong>Stream<\/strong> <code>findAny()<\/code>, <code>findFirst()<\/code>, <code>max()<\/code>, <code>min()<\/code> \u0438 <code>reduce()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/Optional.html\" rel=\"noopener noreferrer nofollow\"><strong>Optional<\/strong><\/a><\/p>\n<pre><code class=\"java\">public final class Optional&lt;T> extends Object<\/code><\/pre>\n<p>\u042d\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442-<strong>\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0438\u043b\u0438 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c <strong>\u043d\u0443\u043b\u0435\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/strong>.<br \/>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 <strong>Optional<\/strong> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c <code>null<br \/><\/code>\u0415\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442,  \u043c\u0435\u0442\u043e\u0434 <code>isPresent()<\/code> \u0432\u0435\u0440\u043d\u0435\u0442 <code>true<\/code><\/p>\n<p>\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 <code>null<br \/><\/code>\u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0430 <strong>NullPointerException<\/strong>.<br \/>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044e \u044d\u0442\u043e\u043c\u0443 \u043e\u0434\u0438\u043d \u043e\u0431\u044a\u0435\u043a\u0442 <strong>Optional<\/strong> \u043c\u043e\u0436\u043d\u043e <strong>\u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c<\/strong> \u0441 \u0434\u0440\u0443\u0433\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c <strong>Optional<\/strong> \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0442\u043e\u0434 <code>equals()<\/code>, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0445\u0440\u0430\u043d\u044f\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 <code>null<\/code>.<\/p>\n<p><strong>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 Optional<\/strong> <code>get()<br \/><\/code>\u041c\u0435\u0442\u043e\u0434 \u043a\u043b\u0430\u0441\u0441\u0430 <strong>Optoinal<\/strong> \u2013 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u0440\u043e\u0441\u0438\u0442 <strong>NoSuchElementException<\/strong> .<\/p>\n<pre><code class=\"java\">Stream.of(\"1\", \"22\", \"333\")         .max(Comparator.comparingInt(String::length))         .get();<\/code><\/pre>\n<p><a class=\"anchor\" name=\"%D0%9A%D0%BB%D0%B0%D1%81%D1%81%20Collectors\" id=\"\u041a\u043b\u0430\u0441\u0441 Collectors\"><\/a><\/p>\n<h2>\u041a\u043b\u0430\u0441\u0441 Collectors<\/h2>\n<p>\u041c\u0435\u0442\u043e\u0434 <code>collect()<\/code> \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u00a0Stream\u00a0<strong>\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435<\/strong> \u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e <strong>\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0430\u043d\u043d\u044b\u0445<\/strong>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u2014\u00a0<code>List&lt;T><\/code>,\u00a0<code>Set&lt;T><\/code>,\u00a0<code>Map&lt;T, R><\/code>\u00a0<\/p>\n<pre><code class=\"java\">public interface Collector&lt;T,A,R><\/code><\/pre>\n<p>\u0412 \u043c\u0435\u0442\u043e\u0434\u00a0<code>collect()<\/code>\u00a0\u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <strong>\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430<\/strong> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0442\u0438\u043f\u0430\u00a0<a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/Collector.html\" rel=\"noopener noreferrer nofollow\"><strong>Collector<\/strong><\/a>.<br \/>\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0441\u0430\u00a0<a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/Collectors.html\" rel=\"noopener noreferrer nofollow\"><strong>Collectors<\/strong><\/a> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 <strong>Collector<\/strong>.<\/p>\n<pre><code class=\"java\">public final class Collectors extends Object<\/code><\/pre>\n<p>\u041a\u043b\u0430\u0441\u0441 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/Collectors.html\" rel=\"noopener noreferrer nofollow\"><strong>Collectors<\/strong><\/a> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f <strong>\u0441\u0431\u043e\u0440\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432<\/strong> \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, <strong>\u043e\u0431\u043e\u0431\u0449\u0435\u043d\u0438\u044f <\/strong>\u0438 <strong>\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432<\/strong> \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u043c\u0438 \u0438 \u0442. \u043f., \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439.<\/p>\n<p><strong>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0430 \u0432<\/strong> <strong>List <\/strong><code>toList()<\/code><\/p>\n<pre><code class=\"java\">list.stream().collect(Collectors.toList());<\/code><\/pre>\n<p><strong>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0430 \u0432<\/strong> <strong>Set <\/strong><code>toSet()<\/code><\/p>\n<pre><code class=\"java\">list.stream().collect(Collectors.toSet());<\/code><\/pre>\n<p><strong>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0430 \u0432<\/strong> <strong>Map <\/strong><code>toMap()<\/code><\/p>\n<pre><code class=\"java\">map.entrySet().stream()         .map(e -> String.valueOf(e).split(\"=\"))         .collect(Collectors.toMap(e -> e[0], e -> e[1]));<\/code><\/pre>\n<p><strong>\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 String <\/strong> <code>joining()<\/code><br \/>\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 <strong>List<\/strong> \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e<\/p>\n<pre><code class=\"java\">list.stream().collect(Collectors.joining(\", \"));<\/code><\/pre>\n<p><strong>\u0421\u0443\u043c\u043c\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u0442\u043e\u043a\u0430 <\/strong><code>summingInt(), summingDouble(), summingLong()<br \/><\/code>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0443\u043c\u043c\u0430 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432<\/p>\n<pre><code class=\"java\">List&lt;Employee> employees = new ArrayList&lt;>()  employees.stream()         .collect(Collectors.summingDouble(Employee::getSalary)));<\/code><\/pre>\n<p><strong>\u0421\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044e <\/strong><code>groupingBy()<\/code><br \/>\u0413\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0430 \u043b\u044e\u0434\u0435\u0439 \u043f\u043e \u0441\u0442\u0440\u0430\u043d\u0435<\/p>\n<pre><code class=\"java\">List&lt;Person> people = new ArrayList&lt;>()  people.stream()         .collect(Collectors.groupingBy(Person::getCountry));<\/code><\/pre>\n<p><a class=\"anchor\" name=\"%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA%20%D1%81%D1%81%D1%8B%D0%BB%D0%BE%D0%BA\" id=\"\u0421\u043f\u0438\u0441\u043e\u043a \u0441\u0441\u044b\u043b\u043e\u043a\"><\/a><\/p>\n<h2>\u0421\u043f\u0438\u0441\u043e\u043a \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438<\/h2>\n<ul>\n<li>\n<p><a href=\"https:\/\/javarush.ru\/groups\/posts\/2203-stream-api\" rel=\"noopener noreferrer nofollow\">Stream API<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/devmark.ru\/article\/stream-api-intermediate-opers\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 Stream API<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/devmark.ru\/article\/stream-api-terminal-opers\" rel=\"noopener noreferrer nofollow\">\u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 Stream API<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/vertex-academy.com\/tutorials\/ru\/java-8-stream-flatmap\/\" rel=\"noopener noreferrer nofollow\">Java 8 Stream flatMap()<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/java-8-stream\" rel=\"noopener noreferrer nofollow\">Java 8 Stream &#8212; Java Stream<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.baeldung.com\/java-stream-reduce\" rel=\"noopener noreferrer nofollow\">Guide to Stream.reduce()<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/693666\/\"> https:\/\/habr.com\/ru\/post\/693666\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><em>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f, \u043a\u0430\u043a \u0438 \u0432\u0441\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u2013 \u043c\u043e\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u043d\u0438\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f Java. \u0417\u0434\u0435\u0441\u044c \u0442\u0435\u0437\u0438\u0441\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u043d\u0430 \u0432\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e \u0442\u0435\u043c\u0435 \u0438 \u0442\u0435 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043c\u043d\u0435 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u0430\u0447\u043d\u044b\u043c\u0438 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c\u0438. \u042d\u0442\u043e \u043c\u043e\u0439 \u043a\u043e\u043d\u0441\u043f\u0435\u043a\u0442, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435.<\/em><\/p>\n<p><em>\u0421\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u0442\u0435\u043c, \u043a\u0442\u043e \u0438\u0437\u0443\u0447\u0430\u0435\u0442 \u0438\u043b\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u044b Java Core.<br \/>\u0418 \u0442\u0435\u043c, \u043a\u0442\u043e \u0433\u043e\u0442\u043e\u0432\u0438\u0442\u0441\u044f \u043a <\/em><strong><em>\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e<\/em><\/strong><em>.<\/p>\n<p>\u041d\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438, \u043e\u0442\u043a\u0443\u0434\u0430 \u0447\u0435\u0440\u043f\u0430\u043b\u0430\u0441\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0441\u0441\u044b\u043b\u043a\u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0430\u0442\u044c\u0438.<\/em><\/p>\n<h2>\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/h2>\n<ul>\n<li>\n<p><a href=\"#%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5%20%D0%BF%D0%BE%D0%BD%D1%8F%D1%82%D0%B8%D1%8F\" rel=\"noopener noreferrer nofollow\">\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20Stream&lt;T>&#187; rel=&#187;noopener noreferrer nofollow&#187;>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Stream&lt;T><\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%A1%D1%82%D1%80%D0%B8%D0%BC%20%D0%BF%D1%80%D0%B8%D0%BC%D0%B8%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D1%85%20%D1%82%D0%B8%D0%BF%D0%BE%D0%B2\" rel=\"noopener noreferrer nofollow\">\u0421\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C%20Stream\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c Stream<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8%20%D0%BD%D0%B0%D0%B4%20Stream\" rel=\"noopener noreferrer nofollow\">\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 Stream<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%9F%D1%80%D0%BE%D0%BC%D0%B5%D0%B6%D1%83%D1%82%D0%BE%D1%87%D0%BD%D1%8B%D0%B5%20%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8\" rel=\"noopener noreferrer nofollow\">Intermediate \u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%9A%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D1%8B%D0%B5%20%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8\" rel=\"noopener noreferrer nofollow\">Terminal \u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F%20%D1%81%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F\" rel=\"noopener noreferrer nofollow\">\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f Stream.reduce()<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%9A%D0%BB%D0%B0%D1%81%D1%81%20Optional\" rel=\"noopener noreferrer nofollow\">\u041a\u043b\u0430\u0441\u0441 Optional<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%9A%D0%BB%D0%B0%D1%81%D1%81%20Collectors\" rel=\"noopener noreferrer nofollow\">\u041a\u043b\u0430\u0441\u0441 Collectors<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA%20%D1%81%D1%81%D1%8B%D0%BB%D0%BE%D0%BA\" rel=\"noopener noreferrer nofollow\">\u0421\u043f\u0438\u0441\u043e\u043a \u0441\u0441\u044b\u043b\u043e\u043a<\/a><\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5%20%D0%BF%D0%BE%D0%BD%D1%8F%D1%82%D0%B8%D1%8F\" id=\"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f\">\u043f\u043e\u043d\u044f\u0442\u0438\u044f&#187;<\/a><\/p>\n<h2>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f<\/h2>\n<p>\u0421 \u0432\u044b\u0445\u043e\u0434\u043e\u043c <strong>Java 8<\/strong> \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 <strong>\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/strong>.<br \/>\u0421\u0442\u0430\u043b\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u043e\u0432\u0430\u0442\u044c <strong>\u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439<\/strong> \u043d\u0430\u0434 \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<blockquote>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u0301\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0301\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u2014\u00a0<strong>\u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/strong>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0442\u0440\u0430\u043a\u0442\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a <strong>\u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0439<\/strong> \u0432 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445\u00a0(\u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043a\u0430\u043a \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0432 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438).<\/p>\n<\/blockquote>\n<p>\u041f\u0430\u043a\u0435\u0442 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/package-summary.html\" rel=\"noopener noreferrer nofollow\"><strong>java.util.stream<\/strong><\/a> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043b\u0430\u0441\u0441\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0442\u0438\u043b\u0435. \u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0435\u0439, \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0439 \u0432 \u044d\u0442\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0435, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <strong>\u041f\u043e\u0442\u043e\u043a<\/strong>.<\/p>\n<p><strong>Stream API<\/strong> \u2013 \u043f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e <strong>\u043f\u043e\u0442\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445<\/strong> \u0438 <strong>\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435<\/strong> <strong>\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/strong> \u043d\u0430\u0434 \u043d\u0438\u043c\u0438.<\/p>\n<p>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/Stream.html\" rel=\"noopener noreferrer nofollow\"><strong>Stream<\/strong><\/a>, <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/IntStream.html\" rel=\"noopener noreferrer nofollow\"><strong>IntStream<\/strong><\/a>, <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/LongStream.html\" rel=\"noopener noreferrer nofollow\"><strong>LongStream<\/strong><\/a> \u0438 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/DoubleStream.html\" rel=\"noopener noreferrer nofollow\"><strong>DoubleStream<\/strong><\/a> \u2013 \u044d\u0442\u043e \u043f\u043e\u0442\u043e\u043a\u0438 <strong>\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432<\/strong> \u0438 <strong>\u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0445<\/strong> <strong>\u0442\u0438\u043f\u043e\u0432<\/strong> <code>int<\/code>, <code>long<\/code> \u0438 <code>double<\/code>.<\/p>\n<p><a class=\"anchor\" name=\"%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20Stream&lt;T>&#187; id=&#187;\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Stream&lt;T>&#187;><\/a><\/p>\n<h2>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Stream&lt;T><\/h2>\n<pre><code class=\"java\">public interface Stream&lt;T> extends BaseStream&lt;T,Stream&lt;T>><\/code><\/pre>\n<p>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<strong> <\/strong><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/Stream.html\" rel=\"noopener noreferrer nofollow\"><strong>Stream<\/strong><\/a> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 <strong>\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435<\/strong> \u0438 <strong>\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0435<\/strong> \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<blockquote>\n<p>\u041a \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043d\u044b\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u00a0\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 <strong>\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u0432\u044b\u0431\u043e\u0440\u043a\u043e\u0439<\/strong>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0447\u0438\u0441\u043b\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438 \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0432\u044b\u0431\u043e\u0440\u043a\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439.<\/p>\n<\/blockquote>\n<p>Stream <strong>\u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442<\/strong> \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0434\u043b\u044f <strong>\u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430<\/strong> \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c \u0438\u043b\u0438 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043c\u0438. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043e\u043d <strong>\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442<\/strong> <strong>\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a<\/strong> \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 <strong>\u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430\u0434 \u044d\u0442\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438.<\/p>\n<p><a class=\"anchor\" name=\"%D0%A1%D1%82%D1%80%D0%B8%D0%BC%20%D0%BF%D1%80%D0%B8%D0%BC%D0%B8%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D1%85%20%D1%82%D0%B8%D0%BF%D0%BE%D0%B2\" id=\"\u0421\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432\">\u0432\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432&#187;><\/a><\/p>\n<h2>\u0421\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432<\/h2>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0442\u0440\u0435\u043c\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432 \u2013\u00a0<code>int<\/code><em>, <\/em><code>long<\/code>\u00a0\u0438\u00a0<code>double<\/code>\u00a0\u2013 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/package-summary.html\" rel=\"noopener noreferrer nofollow\"><strong>java.util.stream<\/strong><\/a><strong> <\/strong>\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0442\u0440\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u0438\u043c\u0430 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432:<\/p>\n<p><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/IntStream.html\" rel=\"noopener noreferrer nofollow\"><strong>IntStream<\/strong><\/a><\/p>\n<pre><code class=\"java\">public interface IntStream extends BaseStream&lt;Integer,IntStream><\/code><\/pre>\n<p><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/LongStream.html\" rel=\"noopener noreferrer nofollow\"><strong>LongStream<\/strong><\/a><\/p>\n<pre><code class=\"java\">public interface LongStream extends BaseStream&lt;Long,LongStream><\/code><\/pre>\n<p><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/DoubleStream.html\" rel=\"noopener noreferrer nofollow\"><strong>DoubleStream<\/strong><\/a><\/p>\n<pre><code class=\"java\">public interface DoubleStream extends BaseStream&lt;Double,DoubleStream><\/code><\/pre>\n<p><strong>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0430 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 <\/strong><code>mapToInt(), mapToDouble(), mapToLong()<\/code><\/p>\n<pre><code class=\"java\">List&lt;Integer> numbers = new ArrayList&lt;>();  numbers.stream().mapToInt(value -> value);  numbers.stream().mapToDouble(value -> value);          numbers.stream().mapToLong(value -> value);<\/code><\/pre>\n<p>\u0421\u0442\u0440\u0438\u043c\u044b \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043c\u0435\u044e\u0442 \u0440\u044f\u0434 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <strong>\u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d <\/strong>\u0438 <strong>\u0441\u0443\u043c\u043c\u0430<\/strong> \u0432\u0441\u0435\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u0442\u043e\u043a\u0430. <\/p>\n<p>\u041c\u0435\u0442\u043e\u0434\u044b \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f\u00a0<strong>IntStream<\/strong>\u00a0\u0438\u00a0<strong>LongStream<\/strong>.<br \/>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0438\u043c\u0430 \u0438\u0437 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0447\u0438\u0441\u0435\u043b:<\/p>\n<p><code>range(int\u00a0startInclusive, int\u00a0endExclusive)<br \/><\/code><br \/><code>rangeClosed(int\u00a0startInclusive, int\u00a0endInclusive)<\/code><\/p>\n<p>\u0412  \u043c\u0435\u0442\u043e\u0434\u0435 <code>range()<\/code>\u0432\u0442\u043e\u0440\u043e\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043c\u0435\u0442\u043e\u0434\u0430\u00a0<strong>\u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442<\/strong> \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0447\u0438\u0441\u0435\u043b, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u043c\u0435\u0442\u043e\u0434 <code>rangeClosed()<\/code> <strong>\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442<\/strong> \u0435\u0433\u043e \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d.\u00a0<\/p>\n<p><a class=\"anchor\" name=\"%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C%20Stream\" id=\"\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c Stream\">Stream&#187;><\/a><\/p>\n<h2>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Stream<\/h2>\n<p>\u041f\u043e\u0442\u043e\u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p>Stream \u0438\u0437 <strong>List<\/strong><\/p>\n<pre><code class=\"java\">List&lt;String> list = new ArrayList&lt;>();  list.stream();  list.parallelStream();           \/\/ \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a<\/code><\/pre>\n<p>Stream \u0438\u0437 <strong>Map<\/strong><\/p>\n<pre><code class=\"java\">Map&lt;String, String> map = new HashMap&lt;>();  map.entrySet().stream();  map.values().stream();<\/code><\/pre>\n<p>Stream \u0438\u0437 <strong>\u043c\u0430\u0441\u0441\u0438\u0432\u0430<\/strong>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <strong>\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 <\/strong>\u043c\u0435\u0442\u043e\u0434<strong> <\/strong>\u043a\u043b\u0430\u0441\u0441\u0430<strong> Arrays<\/strong><\/p>\n<pre><code class=\"java\">String[] array = new String[10];  Arrays.stream(array);<\/code><\/pre>\n<p>Stream \u0438\u0437 <strong>\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432<\/strong>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <strong>\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 <\/strong>\u043c\u0435\u0442\u043e\u0434\u044b<strong> \u041a\u043b\u0430\u0441\u0441\u043e\u0432-\u043f\u043e\u0442\u043e\u043a\u043e\u0432<\/strong><\/p>\n<pre><code class=\"java\">Stream.of(\"a\", \"b\", \"c\");        \/\/ \u043f\u043e\u0442\u043e\u043a \u0438\u0437 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432  Stream.of(array);                \/\/ \u043f\u043e\u0442\u043e\u043a \u0438\u0437 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0430  Stream.of(list);                 \/\/ \u043f\u043e\u0442\u043e\u043a \u0438\u0437 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043f\u0438\u0441\u043a\u0430 List  Stream.generate(Math::random);   \/\/ \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u0430 \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b  Stream.concat(stream1, stream2); \/\/ \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0434\u0432\u0430 \u043f\u043e\u0442\u043e\u043a\u0430 \u0432 \u043e\u0434\u0438\u043d  IntStream.range(1, 10);          \/\/ \u043f\u043e\u0442\u043e\u043a \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0447\u0438\u0441\u0435\u043b \u043e\u0442 1 \u0434\u043e 9  IntStream.rangeClosed(1, 10);    \/\/ \u043f\u043e\u0442\u043e\u043a \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0447\u0438\u0441\u0435\u043b \u043e\u0442 1 \u0434\u043e 10<\/code><\/pre>\n<p>Stream \u0438\u0437 <strong>\u0441\u0442\u0440\u043e\u043a<\/strong> <strong>\u0431\u0443\u0444\u0435\u0440\u0430 BufferedReader<\/strong><\/p>\n<pre><code class=\"java\">BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));  bufferedReader.lines();<\/code><\/pre>\n<p>Stream \u0438\u0437 <strong>\u0441\u0442\u0440\u043e\u043a \u0444\u0430\u0439\u043b\u0430<\/strong> \u0447\u0435\u0440\u0435\u0437 <strong>\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439<\/strong> <strong>\u043c\u0435\u0442\u043e\u0434<\/strong> \u043a\u043b\u0430\u0441\u0441\u0430 <strong>Files<\/strong><\/p>\n<pre><code class=\"java\">Path path = Path.of(\"\/root\/test.txt\");  Files.lines(path);<\/code><\/pre>\n<p>Stream \u0438\u0437 <strong>\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445<\/strong> <strong>\u0447\u0438\u0441\u0435\u043b Random<\/strong><\/p>\n<pre><code class=\"java\">Random random = new Random();  random.ints();  random.longs();  random.doubles();<\/code><\/pre>\n<p><a class=\"anchor\" name=\"%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8%20%D0%BD%D0%B0%D0%B4%20Stream\" id=\"\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 Stream\">\u0434 Stream&#187;><\/a><\/p>\n<h2>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 Stream<\/h2>\n<p>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 <strong>\u043f\u043e\u0442\u043e\u043a\u043e\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432<\/strong> \u0431\u044b\u0432\u0430\u044e\u0442:<\/p>\n<ul>\n<li>\n<p><strong>Intermediate<\/strong> \u2013 \u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435<br \/>\u041d\u0435 \u043c\u0435\u043d\u044f\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0434\u0430\u044e\u0442 <strong>\u043b\u043e\u0433\u0438\u043a\u0443<\/strong> \u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<br \/>\u0421 \u0438\u0445 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e <strong>\u0446\u0435\u043f\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 <\/strong>\u043d\u0430\u0434 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>Terminal<\/strong> \u2013 \u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0435<br \/><strong>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442<\/strong> \u0432\u0441\u044e \u0446\u0435\u043f\u044c \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, <strong>\u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0442<\/strong> <strong>\u043f\u043e\u0442\u043e\u043a<\/strong> \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 <strong>\u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435<\/strong> \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 <strong>\u041d\u0415 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f<\/strong> \u0431\u0435\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0445.<br \/>\u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0442\u0440\u0438\u043c <strong>\u043d\u0435\u043b\u044c\u0437\u044f<\/strong> <strong>\u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c<\/strong>.<\/p>\n<p>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043a\u0430\u043a <strong>\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e<\/strong>, \u0442\u0430\u043a \u0438 <strong>\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e<\/strong>.<br \/>\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0441\u0442\u0440\u0438\u043c \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439, \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <code>parallel()<\/code><\/p>\n<pre><code class=\"java\">Stream&lt;String> stream = list.stream();  stream.parallel();<\/code><\/pre>\n<p><a class=\"anchor\" name=\"%D0%9F%D1%80%D0%BE%D0%BC%D0%B5%D0%B6%D1%83%D1%82%D0%BE%D1%87%D0%BD%D1%8B%D0%B5%20%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8\" id=\"\u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438\">\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438&#187;><\/a><\/p>\n<h2>\u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. Intermediate<\/h2>\n<p>\u0414\u0430\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0443\u0434\u043e\u0431\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043a\u0430\u043a <strong>\u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435<\/strong> \u2013 \u043e\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u0441\u044f \u043a\u043e\u0433\u0434\u0430 \u0438\u0445 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043d\u0430\u0434 \u0441\u0442\u0440\u0438\u043c\u043e\u043c.<\/p>\n<p><strong>\u041f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u043d\u0430\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c <\/strong><code>peek()<br \/><\/code>\u0410\u043d\u0430\u043b\u043e\u0433 <code>forEach()<\/code>, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 (<strong>\u043d\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439<\/strong>)<br \/>\u0415\u0441\u043b\u0438 \u0432 \u043c\u0435\u0442\u043e\u0434 <code>peek()<\/code> \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>System.out::println<\/code>, \u0442\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0432 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0442\u043e\u043a.<\/p>\n<pre><code class=\"java\">Stream.of(\"a\", \"b\", \"c\").peek(System.out::println);<\/code><\/pre>\n<p><strong>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 <\/strong><code>map()<br \/><\/code>\u041c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439.<\/p>\n<pre><code class=\"java\">Stream.of(1, 2, 3).map((x) -> String.valueOf(x));  Stream.of(1, 2, 3).map(String::valueOf);        \/\/ \u043b\u044f\u043c\u0431\u0434\u0430 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435  Stream.of(\"1\", \"2\", \"3\").map(Integer::parseInt);<\/code><\/pre>\n<p><strong>\u041e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b  <\/strong><code>filter()<\/code><\/p>\n<pre><code class=\"java\">Stream.of(1, 2, 3, 4, 5).filter(n -> n &lt; 4);    \/\/ [1, 2, 3]<\/code><\/pre>\n<p><strong>\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b<\/strong> <code>distinct()<\/code><\/p>\n<pre><code class=\"java\">Stream.of(1, 2, 3, 2, 4, 2, 5).distinct();      \/\/ [1, 2, 3, 4, 5]<\/code><\/pre>\n<p><strong>\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430<\/strong> \u0438 <strong>\u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 <\/strong><code>sorted()<\/code><\/p>\n<pre><code class=\"java\">Stream.of(4, 2, 3, 5, 1).sorted();              \/\/ [1, 2, 3, 4, 5]  Stream.of(4, 2, 3, 5, 1).sorted(Comparator.reverseOrder())<\/code><\/pre>\n<p><strong>\u041b\u0438\u043c\u0438\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 <\/strong><code>limit()<\/code><\/p>\n<pre><code class=\"java\">Stream.of(1, 2, 3, 4, 5, 6).limit(3);            \/\/ [1, 2, 3]<\/code><\/pre>\n<p><strong>\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b<\/strong> <code>skip()<\/code><\/p>\n<pre><code class=\"java\">Stream.of(1, 2, 3, 4, 5).skip(2);                \/\/ [3, 4, 5]<\/code><\/pre>\n<p><strong>\u0421\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0442\u043e\u043a \u0441 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u043c \u043f\u043e\u0442\u043e\u043a\u043e\u043c<\/strong> <code>flatMap()<br \/><\/code>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <strong>\u043f\u043e\u0442\u043e\u043a<\/strong>, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0437\u0430\u043c\u0435\u043d\u044b \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c <strong>\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e<\/strong> \u043f\u043e\u0442\u043e\u043a\u0430, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0443\u0442\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 <strong>\u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/strong> <strong>\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f<\/strong> \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443.<\/p>\n<pre><code class=\"java\">List&lt;String> petNames = person.stream()         .flatMap(person -> person.getPetName().stream())         .collect(Collectors.toList());  System.out.println(petNames);             \/\/ [pet1, pet2, pet3, pet4, pet5]<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0434\u0432\u0443\u0445\u043c\u0435\u0440\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432<\/p>\n<pre><code class=\"java\">Integer[][] array2d = new Integer[][] {                 {1, 2, 3},                 {4, 5} };  Arrays.stream(array2d).flatMap(Arrays::stream);    \/\/ [1, 2, 3, 4, 5]<\/code><\/pre>\n<p><a class=\"anchor\" name=\"%D0%9A%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D1%8B%D0%B5%20%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8\" id=\"\u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438\">\u043f\u0435\u0440\u0430\u0446\u0438\u0438&#187;><\/a><\/p>\n<h2>\u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. Terminal<\/h2>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0432\u0441\u044e <strong>\u0446\u0435\u043f\u044c<\/strong> <strong>\u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439<\/strong> \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u043f\u043e\u0442\u043e\u043a.<\/p>\n<p><strong>\u0421\u043e\u0431\u0440\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u043e\u0442\u043e\u043a\u0430 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043a \u043d\u0443\u0436\u043d\u043e\u043c\u0443 \u0442\u0438\u043f\u0443<\/strong> <code>collect()<br \/><\/code>\u0412 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043c\u0435\u0442\u043e\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 <a href=\"#%D0%9A%D0%BB%D0%B0%D1%81%D1%81%20Collectors\" rel=\"noopener noreferrer nofollow\"><strong>Collector<\/strong><\/a><strong>.<\/strong><\/p>\n<p>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a \u0432 <strong>List<\/strong> <code>Collectors.toList()<\/code><\/p>\n<pre><code class=\"java\">List&lt;String> collect = Stream.of(\"a\", \"b\", \"c\").collect(Collectors.toList());<\/code><\/pre>\n<p>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 <strong>String<\/strong> <code>Collectors.joining()<\/code><\/p>\n<pre><code class=\"java\">String collect = Stream.of(\"a\", \"b\", \"c\").collect(Collectors.joining());<\/code><\/pre>\n<p><strong>\u0418\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443<\/strong> <code>forEach()<\/code><\/p>\n<pre><code class=\"java\">Stream.of(\"a\", \"b\", \"c\").forEach(System.out::println);<\/code><\/pre>\n<p><strong>\u0423\u0437\u043d\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u0442\u0440\u0438\u043c\u0430<\/strong> <code>count()<\/code><\/p>\n<pre><code class=\"java\">Stream.of(\"a\", \"b\", \"c\").count();<\/code><\/pre>\n<p><strong>\u041d\u0430\u0439\u0442\u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/strong> <code>min()<\/code> \u0438 <code>max()<br \/><\/code>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <strong>Comparator<\/strong>.<br \/>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 <a href=\"#%D0%9A%D0%BB%D0%B0%D1%81%D1%81%20Optional\" rel=\"noopener noreferrer nofollow\"><strong>Optional<\/strong><\/a><strong> <\/strong>\u2013<strong> <\/strong>\u043e\u0431\u044a\u0435\u043a\u0442-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c <code>null<\/code>.<strong><br \/><\/strong>\u041c\u0435\u0442\u043e\u0434 <code>get()<\/code> \u2013\u00a0 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 <strong>Optional<\/strong>.<\/p>\n<pre><code class=\"java\">Optional&lt;Integer> max = Stream.of(4, 2, 3, 5, 1)         .max(Comparator.naturalOrder());  Integer maximum = max.get();  Integer minimum = Stream.of(4, 2, 3, 5, 1)         .min(Comparator.naturalOrder())         .get();<\/code><\/pre>\n<p><strong>Comparator<\/strong> \u0443\u0434\u043e\u0431\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c<strong> <\/strong>\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <strong>\u043b\u044f\u043c\u0431\u0434\u0430-\u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/strong>:<\/p>\n<pre><code class=\"java\">Stream.of(\"a\", \"bb\", \"ccc\")         .min((s1, s2) -> s1.length() - s2.length())         .get();  Stream.of(\"a\", \"bb\", \"ccc\")         .max(Comparator.comparingInt(String::length))         .get();<\/code><\/pre>\n<p><strong>\u041d\u0430\u0439\u0442\u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442<\/strong> <code>findFirst()<br \/><\/code>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <strong>\u043f\u0435\u0440\u0432\u044b\u0439<\/strong> \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u0437 \u0441\u0442\u0440\u0438\u043c\u0430 \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f.<br \/>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 <strong>Optional.<\/strong><\/p>\n<pre><code class=\"java\">Stream.of(1, 2, 3, 4, 5)         .filter(e -> e % 2 == 0)         .findFirst()         .get();<\/code><\/pre>\n<p><strong>\u041d\u0430\u0439\u0442\u0438 \u043b\u044e\u0431\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442<\/strong> <code>findAny()<br \/><\/code>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <strong>\u043b\u044e\u0431\u043e\u0439 <\/strong>\u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u0437 \u0441\u0442\u0440\u0438\u043c\u0430 \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f.<br \/>\u0410\u043d\u0430\u043b\u043e\u0433 \u043c\u0435\u0442\u043e\u0434\u0430 <code>findFirst()<\/code>\u0434\u043b\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f <strong>\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e<\/strong>.<br \/>\u041d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <strong>\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439<\/strong> \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443 \u0432 \u043f\u043e\u0442\u043e\u043a\u0435.<\/p>\n<pre><code class=\"java\">Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)         .filter(e -> e % 2 == 0)         .parallel()         .findAny()         .get();<\/code><\/pre>\n<p><strong>\u0412\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u044e<\/strong> <code>allMatch()<\/code><\/p>\n<pre><code class=\"java\">Stream.of(1, 2, 3, 4, 5).allMatch(e -> e > 0);     \/\/ true<\/code><\/pre>\n<p><strong>\u0412\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u041d\u0415 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u044e<\/strong> <code>noneMatch()<\/code><\/p>\n<pre><code class=\"java\">Stream.of(1, 2, 3, 4, 5).noneMatch(e -> e > 0);    \/\/ false<\/code><\/pre>\n<p><strong>\u0425\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u044e<\/strong> <code>anyMatch()<\/code><\/p>\n<pre><code class=\"java\">Stream.of(1, 2, 3, 4, 5).anyMatch(e -> e > 4);     \/\/ true<\/code><\/pre>\n<p><strong>\u0421\u0443\u043c\u043c\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u0442\u0440\u0438\u043c\u0430 <\/strong><code>sum()<br \/><\/code>\u042d\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u043a\u043b\u0430\u0441\u0441\u043e\u0432-\u0441\u0442\u0440\u0438\u043c\u043e\u0432 <strong>\u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0445<\/strong> <strong>\u0442\u0438\u043f\u043e\u0432<\/strong> \u0434\u0430\u043d\u043d\u044b\u0445:<br \/><a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/IntStream.html\" rel=\"noopener noreferrer nofollow\"><strong>IntStream<\/strong><\/a>, <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/LongStream.html\" rel=\"noopener noreferrer nofollow\"><strong>LongStream<\/strong><\/a> \u0438 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/18\/docs\/api\/java.base\/java\/util\/stream\/DoubleStream.html\" rel=\"noopener noreferrer nofollow\"><strong>DoubleStream<\/strong><\/a><\/p>\n<pre><code class=\"java\">List&lt;Integer> integers = new ArrayList&lt;>();  integers.stream()         .mapToInt(i -> i)         .sum();<\/code><\/pre>\n<p><a class=\"anchor\" name=\"%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F%20%D1%81%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F\" id=\"\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f\">\u0432\u0435\u0434\u0435\u043d\u0438\u044f&#187;><\/a><\/p>\n<h2>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f Stream.reduce()<\/h2>\n<p>\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <strong>\u043e\u0434\u0438\u043d \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/strong> \u0438\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, <strong>\u043d\u0435\u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e<\/strong> \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044f <strong>\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e<\/strong> <strong>\u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/strong> \u043a <\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-340475","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/340475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=340475"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/340475\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=340475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=340475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=340475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}