{"id":923260,"date":"2024-07-18T06:11:24","date_gmt":"2024-07-18T06:11:24","guid":{"rendered":"https:\/\/proxyelite.info\/?p=923260"},"modified":"2024-07-10T06:23:35","modified_gmt":"2024-07-10T06:23:35","slug":"mastering-the-java-8-stream-api-a-comprehensive-guide","status":"publish","type":"post","link":"https:\/\/proxyelite.info\/vi\/mastering-the-java-8-stream-api-a-comprehensive-guide\/","title":{"rendered":"N\u1eafm v\u1eefng API lu\u1ed3ng Java 8: H\u01b0\u1edbng d\u1eabn to\u00e0n di\u1ec7n"},"content":{"rendered":"<h3 class=\"wp-block-heading\">API lu\u1ed3ng Java 8 l\u00e0 g\u00ec v\u00e0 n\u00f3 c\u00f3 th\u1ec3 bi\u1ebfn \u0111\u1ed5i m\u00e3 c\u1ee7a b\u1ea1n nh\u01b0 th\u1ebf n\u00e0o?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">API lu\u1ed3ng Java 8 l\u00e0 m\u1ed9t c\u00f4ng c\u1ee5 thay \u0111\u1ed5i cu\u1ed9c ch\u01a1i d\u00e0nh cho c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n Java, cung c\u1ea5p m\u1ed9t c\u00e1ch m\u1edbi \u0111\u1ec3 x\u1eed l\u00fd d\u1eef li\u1ec7u m\u1ed9t c\u00e1ch khai b\u00e1o v\u00e0 hi\u1ec7u qu\u1ea3. H\u01b0\u1edbng d\u1eabn n\u00e0y s\u1ebd h\u01b0\u1edbng d\u1eabn b\u1ea1n th\u00f4ng tin chi ti\u1ebft v\u1ec1 API Stream, gi\u00fap b\u1ea1n hi\u1ec3u c\u00e1c t\u00ednh n\u0103ng m\u1ea1nh m\u1ebd c\u1ee7a n\u00f3 v\u00e0 c\u00e1ch t\u1eadn d\u1ee5ng ch\u00fang trong m\u00e3 c\u1ee7a b\u1ea1n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">M\u1ee5c l\u1ee5c<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Ph\u1ea7n<\/th><th>S\u1ef1 mi\u00eau t\u1ea3<\/th><\/tr><\/thead><tbody><tr><td>Gi\u1edbi thi\u1ec7u<\/td><td>T\u1ed5ng quan v\u1ec1 API lu\u1ed3ng Java 8<\/td><\/tr><tr><td>T\u1ea1o lu\u1ed3ng<\/td><td>C\u00e1c c\u00e1ch kh\u00e1c nhau \u0111\u1ec3 t\u1ea1o lu\u1ed3ng<\/td><\/tr><tr><td>Ho\u1ea1t \u0111\u1ed9ng trung gian<\/td><td>Gi\u1ea3i th\u00edch c\u00e1c ho\u1ea1t \u0111\u1ed9ng trung gian kh\u00e1c nhau<\/td><\/tr><tr><td>Ho\u1ea1t \u0111\u1ed9ng c\u1ee7a nh\u00e0 ga<\/td><td>T\u1ed5ng quan v\u1ec1 ho\u1ea1t \u0111\u1ed9ng c\u1ee7a thi\u1ebft b\u1ecb \u0111\u1ea7u cu\u1ed1i v\u00e0 t\u00e1c d\u1ee5ng c\u1ee7a ch\u00fang<\/td><\/tr><tr><td>Lu\u1ed3ng song song<\/td><td>C\u00e1ch s\u1eed d\u1ee5ng c\u00e1c lu\u1ed3ng song song \u0111\u1ec3 c\u00f3 hi\u1ec7u su\u1ea5t t\u1ed1t h\u01a1n<\/td><\/tr><tr><td>V\u00ed d\u1ee5 th\u1ef1c t\u1ebf<\/td><td>V\u00ed d\u1ee5 v\u1ec1 m\u00e3 th\u1ec3 hi\u1ec7n vi\u1ec7c s\u1eed d\u1ee5ng API Stream<\/td><\/tr><tr><td>L\u1ee3i \u00edch c\u1ee7a vi\u1ec7c s\u1eed d\u1ee5ng API lu\u1ed3ng<\/td><td>\u01afu \u0111i\u1ec3m c\u1ee7a vi\u1ec7c s\u1eed d\u1ee5ng Stream API trong ph\u00e1t tri\u1ec3n Java<\/td><\/tr><tr><td>Nh\u1eefng c\u1ea1m b\u1eaby ph\u1ed5 bi\u1ebfn<\/td><td>Nh\u1eefng l\u1ed7i th\u01b0\u1eddng g\u1eb7p v\u00e0 c\u00e1ch tr\u00e1nh ch\u00fang<\/td><\/tr><tr><td>Ph\u1ea7n k\u1ebft lu\u1eadn<\/td><td>T\u00f3m t\u1eaft nh\u1eefng \u0111i\u1ec3m ch\u00ednh v\u00e0 suy ngh\u0129 cu\u1ed1i c\u00f9ng<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Gi\u1edbi thi\u1ec7u<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Java 8 mang \u0111\u1ebfn v\u00f4 s\u1ed1 t\u00ednh n\u0103ng m\u1edbi cho ng\u00f4n ng\u1eef n\u00e0y, nh\u01b0ng m\u1ed9t trong nh\u1eefng t\u00ednh n\u0103ng c\u00f3 t\u00e1c \u0111\u1ed9ng m\u1ea1nh nh\u1ea5t l\u00e0 API Stream. API n\u00e0y cung c\u1ea5p m\u1ed9t c\u00e1ch ti\u1ebfp c\u1eadn ch\u1ee9c n\u0103ng \u0111\u1ec3 x\u1eed l\u00fd chu\u1ed7i c\u00e1c ph\u1ea7n t\u1eed, cho ph\u00e9p c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n vi\u1ebft m\u00e3 ng\u1eafn g\u1ecdn v\u00e0 d\u1ec5 \u0111\u1ecdc h\u01a1n. Lu\u1ed3ng kh\u00f4ng ph\u1ea3i l\u00e0 c\u1ea5u tr\u00fac d\u1eef li\u1ec7u; ch\u00fang l\u00e0 nh\u1eefng kh\u00e1i ni\u1ec7m tr\u1eebu t\u01b0\u1ee3ng cho ph\u00e9p b\u1ea1n x\u1eed l\u00fd d\u1eef li\u1ec7u theo c\u00e1ch khai b\u00e1o.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">T\u1ea1o lu\u1ed3ng<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">C\u00e1c lu\u1ed3ng c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c t\u1ea1o t\u1eeb nhi\u1ec1u ngu\u1ed3n d\u1eef li\u1ec7u kh\u00e1c nhau nh\u01b0 b\u1ed9 s\u01b0u t\u1eadp, m\u1ea3ng ho\u1eb7c k\u00eanh I\/O. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 m\u1ed9t s\u1ed1 c\u00e1ch ph\u1ed5 bi\u1ebfn \u0111\u1ec3 t\u1ea1o lu\u1ed3ng:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">T\u1eeb B\u1ed9 s\u01b0u t\u1eadp<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">B\u1ea1n c\u00f3 th\u1ec3 t\u1ea1o lu\u1ed3ng t\u1eeb b\u1ea5t k\u1ef3 B\u1ed9 s\u01b0u t\u1eadp n\u00e0o (v\u00ed d\u1ee5: Danh s\u00e1ch, B\u1ed9).<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">List&lt;String&gt; list = Arrays.asList(&quot;a&quot;, &quot;b&quot;, &quot;c&quot;);\nStream&lt;String&gt; stream = list.stream();\n<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">T\u1eeb m\u1ea3ng<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">B\u1ea1n c\u0169ng c\u00f3 th\u1ec3 t\u1ea1o lu\u1ed3ng t\u1eeb m\u1ed9t m\u1ea3ng.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">String[] array = {&quot;a&quot;, &quot;b&quot;, &quot;c&quot;};\nStream&lt;String&gt; stream = Arrays.stream(array);\n<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">T\u1eeb t\u1eadp tin<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Java NIO cung c\u1ea5p m\u1ed9t ph\u01b0\u01a1ng th\u1ee9c \u0111\u1ec3 t\u1ea1o lu\u1ed3ng t\u1eeb m\u1ed9t t\u1ec7p.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">Stream&lt;String&gt; lines = Files.lines(Paths.get(&quot;file.txt&quot;));\n<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Lu\u1ed3ng v\u00f4 h\u1ea1n<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">B\u1ea1n c\u00f3 th\u1ec3 t\u1ea1o lu\u1ed3ng v\u00f4 h\u1ea1n b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng <code data-no-translation=\"\">Stream.generate<\/code> ho\u1eb7c <code data-no-translation=\"\">Stream.iterate<\/code>.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">Stream&lt;Integer&gt; infiniteStream = Stream.iterate(0, n -&gt; n + 1);\n<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Ho\u1ea1t \u0111\u1ed9ng trung gian<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">C\u00e1c ho\u1ea1t \u0111\u1ed9ng trung gian tr\u1ea3 v\u1ec1 m\u1ed9t lu\u1ed3ng m\u1edbi v\u00e0 \u0111\u01b0\u1ee3c th\u1ef1c thi m\u1ed9t c\u00e1ch l\u01b0\u1eddi bi\u1ebfng, ngh\u0129a l\u00e0 ch\u00fang kh\u00f4ng \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n cho \u0111\u1ebfn khi m\u1ed9t thao t\u00e1c \u0111\u1ea7u cu\u1ed1i \u0111\u01b0\u1ee3c g\u1ecdi. Ch\u00fang \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 chuy\u1ec3n \u0111\u1ed5i ho\u1eb7c l\u1ecdc d\u1eef li\u1ec7u.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">L\u1ecdc<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">L\u1ecdc c\u00e1c ph\u1ea7n t\u1eed d\u1ef1a tr\u00ean m\u1ed9t \u0111i\u1ec1u ki\u1ec7n.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">Stream&lt;String&gt; filteredStream = stream.filter(s -&gt; s.startsWith(&quot;a&quot;));\n<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">B\u1ea3n \u0111\u1ed3<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Chuy\u1ec3n \u0111\u1ed5i c\u00e1c ph\u1ea7n t\u1eed.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">Stream&lt;Integer&gt; lengthStream = stream.map(String::length);\n<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">B\u1ea3n \u0111\u1ed3 ph\u1eb3ng<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">L\u00e0m ph\u1eb3ng c\u00e1c c\u1ea5u tr\u00fac l\u1ed3ng nhau.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">Stream&lt;String&gt; flatMappedStream = stream.flatMap(s -&gt; Arrays.stream(s.split(&quot;&quot;)));\n<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\u0110\u00e3 s\u1eafp x\u1ebfp<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">S\u1eafp x\u1ebfp c\u00e1c ph\u1ea7n t\u1eed.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">Stream&lt;String&gt; sortedStream = stream.sorted();\n<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Ri\u00eang bi\u1ec7t<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Lo\u1ea1i b\u1ecf c\u00e1c ph\u1ea7n t\u1eed tr\u00f9ng l\u1eb7p.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">Stream&lt;String&gt; distinctStream = stream.distinct();\n<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Gi\u1edbi h\u1ea1n v\u00e0 b\u1ecf qua<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">C\u1eaft b\u1edbt lu\u1ed3ng th\u00e0nh m\u1ed9t s\u1ed1 ph\u1ea7n t\u1eed nh\u1ea5t \u0111\u1ecbnh ho\u1eb7c b\u1ecf qua n ph\u1ea7n t\u1eed \u0111\u1ea7u ti\u00ean.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">Stream&lt;String&gt; limitedStream = stream.limit(2);\nStream&lt;String&gt; skippedStream = stream.skip(2);\n<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Ho\u1ea1t \u0111\u1ed9ng c\u1ee7a nh\u00e0 ga<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">C\u00e1c ho\u1ea1t \u0111\u1ed9ng c\u1ee7a thi\u1ebft b\u1ecb \u0111\u1ea7u cu\u1ed1i t\u1ea1o ra k\u1ebft qu\u1ea3 ho\u1eb7c t\u00e1c d\u1ee5ng ph\u1ee5 v\u00e0 \u0111\u00e1nh d\u1ea5u s\u1ef1 k\u1ebft th\u00fac c\u1ee7a qu\u00e1 tr\u00ecnh x\u1eed l\u00fd lu\u1ed3ng. Sau khi thao t\u00e1c \u0111\u1ea7u cu\u1ed1i \u0111\u01b0\u1ee3c th\u1ef1c thi, lu\u1ed3ng kh\u00f4ng th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng n\u1eefa.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">cho m\u1ed7i<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Th\u1ef1c hi\u1ec7n m\u1ed9t h\u00e0nh \u0111\u1ed9ng cho m\u1ed7i ph\u1ea7n t\u1eed.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">stream.forEach(System.out::println);\n<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">S\u01b0u t\u1ea7m<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Chuy\u1ec3n \u0111\u1ed5i lu\u1ed3ng th\u00e0nh b\u1ed9 s\u01b0u t\u1eadp ho\u1eb7c c\u1ea5u tr\u00fac d\u1eef li\u1ec7u kh\u00e1c.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">List&lt;String&gt; list = stream.collect(Collectors.toList());\n<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Gi\u1ea3m b\u1edbt<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Gi\u1ea3m lu\u1ed3ng xu\u1ed1ng m\u1ed9t gi\u00e1 tr\u1ecb duy nh\u1ea5t.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">Optional&lt;String&gt; concatenated = stream.reduce((s1, s2) -&gt; s1 + s2);\n<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\u0110\u1ebfm<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tr\u1ea3 v\u1ec1 s\u1ed1 ph\u1ea7n t\u1eed.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">long count = stream.count();\n<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Tr\u1eadn \u0111\u1ea5u ho\u1ea1t \u0111\u1ed9ng<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ki\u1ec3m tra xem c\u00f3 b\u1ea5t k\u1ef3, t\u1ea5t c\u1ea3 ho\u1eb7c kh\u00f4ng c\u00f3 ph\u1ea7n t\u1eed n\u00e0o kh\u1edbp v\u1edbi m\u1ed9t v\u1ecb t\u1eeb nh\u1ea5t \u0111\u1ecbnh hay kh\u00f4ng.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">boolean anyMatch = stream.anyMatch(s -&gt; s.startsWith(&quot;a&quot;));\nboolean allMatch = stream.allMatch(s -&gt; s.length() &gt; 1);\nboolean noneMatch = stream.noneMatch(s -&gt; s.isEmpty());\n<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">T\u00ecm \u0111\u1ea7u ti\u00ean v\u00e0 t\u00ecm b\u1ea5t k\u1ef3<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tr\u1ea3 v\u1ec1 ph\u1ea7n t\u1eed \u0111\u1ea7u ti\u00ean ho\u1eb7c b\u1ea5t k\u1ef3 ph\u1ea7n t\u1eed n\u00e0o t\u1eeb lu\u1ed3ng.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">Optional&lt;String&gt; first = stream.findFirst();\nOptional&lt;String&gt; any = stream.findAny();\n<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Lu\u1ed3ng song song<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">C\u00e1c lu\u1ed3ng c\u00f3 th\u1ec3 d\u1ec5 d\u00e0ng \u0111\u01b0\u1ee3c chuy\u1ec3n \u0111\u1ed5i th\u00e0nh c\u00e1c lu\u1ed3ng song song \u0111\u1ec3 t\u1eadn d\u1ee5ng b\u1ed9 x\u1eed l\u00fd \u0111a l\u00f5i v\u00e0 th\u1ef1c hi\u1ec7n c\u00e1c ho\u1ea1t \u0111\u1ed9ng \u0111\u1ed3ng th\u1eddi.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">Stream&lt;String&gt; parallelStream = list.parallelStream();\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">C\u00e1c lu\u1ed3ng song song c\u00f3 th\u1ec3 c\u1ea3i thi\u1ec7n \u0111\u00e1ng k\u1ec3 hi\u1ec7u su\u1ea5t cho c\u00e1c t\u1eadp d\u1eef li\u1ec7u l\u1edbn nh\u01b0ng n\u00ean th\u1eadn tr\u1ecdng khi s\u1eed d\u1ee5ng \u0111\u1ec3 tr\u00e1nh c\u00e1c v\u1ea5n \u0111\u1ec1 t\u01b0\u01a1ng tranh.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">V\u00ed d\u1ee5 th\u1ef1c t\u1ebf<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">V\u00ed d\u1ee5 1: L\u1ecdc v\u00e0 Thu th\u1eadp<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">H\u00e3y l\u1ecdc danh s\u00e1ch c\u00e1c chu\u1ed7i \u0111\u1ec3 t\u00ecm nh\u1eefng chu\u1ed7i b\u1eaft \u0111\u1ea7u b\u1eb1ng \u201ca\u201d v\u00e0 thu th\u1eadp ch\u00fang v\u00e0o danh s\u00e1ch m\u1edbi.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">List&lt;String&gt; result = list.stream()\n    .filter(s -&gt; s.startsWith(&quot;a&quot;))\n    .collect(Collectors.toList());\n<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">V\u00ed d\u1ee5 2: B\u1ea3n \u0111\u1ed3 v\u00e0 thu nh\u1ecf<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Chuy\u1ec3n \u0111\u1ed5i danh s\u00e1ch c\u00e1c chu\u1ed7i th\u00e0nh ch\u1eef hoa v\u00e0 n\u1ed1i ch\u00fang.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">Optional&lt;String&gt; result = list.stream()\n    .map(String::toUpperCase)\n    .reduce((s1, s2) -&gt; s1 + s2);\n<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">V\u00ed d\u1ee5 3: S\u1eafp x\u1ebfp v\u00e0 gi\u1edbi h\u1ea1n<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">S\u1eafp x\u1ebfp danh s\u00e1ch c\u00e1c chu\u1ed7i v\u00e0 l\u1ea5y 3 ph\u1ea7n t\u1eed \u0111\u1ea7u ti\u00ean.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code data-no-translation=\"\">List&lt;String&gt; result = list.stream()\n    .sorted()\n    .limit(3)\n    .collect(Collectors.toList());\n<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">L\u1ee3i \u00edch c\u1ee7a vi\u1ec7c s\u1eed d\u1ee5ng API lu\u1ed3ng<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">M\u00e3 ng\u1eafn g\u1ecdn<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">API Stream cho ph\u00e9p m\u00e3 ng\u1eafn g\u1ecdn v\u00e0 d\u1ec5 \u0111\u1ecdc h\u01a1n. C\u00e1c thao t\u00e1c tr\u01b0\u1edbc \u0111\u00e2y y\u00eau c\u1ea7u nhi\u1ec1u d\u00f2ng v\u00e0 v\u00f2ng l\u1eb7p th\u01b0\u1eddng c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c r\u00fat g\u1ecdn th\u00e0nh m\u1ed9t d\u00f2ng duy nh\u1ea5t.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C\u1ea3i thi\u1ec7n hi\u1ec7u su\u1ea5t<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">V\u1edbi kh\u1ea3 n\u0103ng x\u1eed l\u00fd d\u1eef li\u1ec7u song song, API Stream c\u00f3 th\u1ec3 c\u1ea3i thi\u1ec7n \u0111\u00e1ng k\u1ec3 hi\u1ec7u su\u1ea5t cho c\u00e1c t\u1eadp d\u1eef li\u1ec7u l\u1edbn.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">M\u00f4 h\u00ecnh l\u1eadp tr\u00ecnh ch\u1ee9c n\u0103ng<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">API Stream gi\u1edbi thi\u1ec7u c\u00e1c kh\u00e1i ni\u1ec7m l\u1eadp tr\u00ecnh ch\u1ee9c n\u0103ng cho Java, gi\u00fap th\u1ef1c hi\u1ec7n c\u00e1c thao t\u00e1c d\u1eef li\u1ec7u ph\u1ee9c t\u1ea1p theo c\u00e1ch khai b\u00e1o d\u1ec5 d\u00e0ng h\u01a1n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Nh\u1eefng c\u1ea1m b\u1eaby ph\u1ed5 bi\u1ebfn<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Kh\u1ea3 n\u0103ng thay \u0111\u1ed5i<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tr\u00e1nh s\u1eeda \u0111\u1ed5i ngu\u1ed3n c\u1ee7a lu\u1ed3ng b\u00ean trong c\u00e1c ho\u1ea1t \u0111\u1ed9ng trung gian v\u00ec n\u00f3 c\u00f3 th\u1ec3 d\u1eabn \u0111\u1ebfn h\u00e0nh vi kh\u00f4ng th\u1ec3 \u0111o\u00e1n tr\u01b0\u1edbc.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Lu\u1ed3ng song song<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">H\u00e3y th\u1eadn tr\u1ecdng khi s\u1eed d\u1ee5ng c\u00e1c lu\u1ed3ng song song v\u00ec ch\u00fang c\u00f3 th\u1ec3 g\u00e2y ra c\u00e1c v\u1ea5n \u0111\u1ec1 t\u01b0\u01a1ng tranh v\u00e0 kh\u00f4ng ph\u1ea3i l\u00fac n\u00e0o c\u0169ng d\u1eabn \u0111\u1ebfn c\u1ea3i thi\u1ec7n hi\u1ec7u su\u1ea5t.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0110\u00e1nh gi\u00e1 l\u01b0\u1eddi bi\u1ebfng<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">H\u00e3y nh\u1edb r\u1eb1ng c\u00e1c ho\u1ea1t \u0111\u1ed9ng trung gian r\u1ea5t l\u01b0\u1eddi bi\u1ebfng. \u0110\u1ea3m b\u1ea3o r\u1eb1ng b\u1ea1n g\u1ecdi thao t\u00e1c \u0111\u1ea7u cu\u1ed1i \u0111\u1ec3 k\u00edch ho\u1ea1t qu\u00e1 tr\u00ecnh x\u1eed l\u00fd.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ph\u1ea7n k\u1ebft lu\u1eadn<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">API lu\u1ed3ng Java 8 l\u00e0 m\u1ed9t c\u00f4ng c\u1ee5 m\u1ea1nh m\u1ebd c\u00f3 th\u1ec3 bi\u1ebfn \u0111\u1ed5i c\u00e1ch b\u1ea1n vi\u1ebft m\u00e3 Java. B\u1eb1ng c\u00e1ch cung c\u1ea5p m\u1ed9t c\u00e1ch ti\u1ebfp c\u1eadn ch\u1ee9c n\u0103ng \u0111\u1ec3 x\u1eed l\u00fd d\u1eef li\u1ec7u, n\u00f3 cho ph\u00e9p m\u00e3 ng\u1eafn g\u1ecdn, d\u1ec5 \u0111\u1ecdc v\u00e0 hi\u1ec7u qu\u1ea3 h\u01a1n. Cho d\u00f9 b\u1ea1n \u0111ang l\u1ecdc, chuy\u1ec3n \u0111\u1ed5i hay t\u1ed5ng h\u1ee3p d\u1eef li\u1ec7u, API Stream \u0111\u1ec1u cung c\u1ea5p gi\u1ea3i ph\u00e1p linh ho\u1ea1t v\u00e0 m\u1ea1nh m\u1ebd. Gi\u1ed1ng nh\u01b0 b\u1ea5t k\u1ef3 c\u00f4ng c\u1ee5 n\u00e0o, \u0111i\u1ec1u quan tr\u1ecdng l\u00e0 ph\u1ea3i hi\u1ec3u c\u00e1c kh\u1ea3 n\u0103ng v\u00e0 h\u1ea1n ch\u1ebf c\u1ee7a n\u00f3 \u0111\u1ec3 s\u1eed d\u1ee5ng n\u00f3 m\u1ed9t c\u00e1ch hi\u1ec7u qu\u1ea3.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kh\u00e1m ph\u00e1 API Stream trong c\u00e1c d\u1ef1 \u00e1n c\u1ee7a b\u1ea1n v\u00e0 tr\u1ea3i nghi\u1ec7m nh\u1eefng l\u1ee3i \u00edch c\u1ee7a c\u00e1ch ti\u1ebfp c\u1eadn ch\u1ee9c n\u0103ng, hi\u1ec7n \u0111\u1ea1i h\u01a1n \u0111\u1ed1i v\u1edbi l\u1eadp tr\u00ecnh Java.<\/p>","protected":false},"excerpt":{"rendered":"<p>What is the Java 8 Stream API and How Can It Transform Your Code? The Java 8 Stream API is a game-changer for Java developers, offering a new way to process data declaratively and efficiently. This tutorial will guide you through the ins and outs of the Stream API, helping you understand its powerful features [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":923261,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-923260","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articles"],"acf":[],"_links":{"self":[{"href":"https:\/\/proxyelite.info\/vi\/wp-json\/wp\/v2\/posts\/923260","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/proxyelite.info\/vi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/proxyelite.info\/vi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/proxyelite.info\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/proxyelite.info\/vi\/wp-json\/wp\/v2\/comments?post=923260"}],"version-history":[{"count":1,"href":"https:\/\/proxyelite.info\/vi\/wp-json\/wp\/v2\/posts\/923260\/revisions"}],"predecessor-version":[{"id":923262,"href":"https:\/\/proxyelite.info\/vi\/wp-json\/wp\/v2\/posts\/923260\/revisions\/923262"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/proxyelite.info\/vi\/wp-json\/wp\/v2\/media\/923261"}],"wp:attachment":[{"href":"https:\/\/proxyelite.info\/vi\/wp-json\/wp\/v2\/media?parent=923260"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/proxyelite.info\/vi\/wp-json\/wp\/v2\/categories?post=923260"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/proxyelite.info\/vi\/wp-json\/wp\/v2\/tags?post=923260"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}