Where <-> filter #Kotlinコレクション操作01
Kotlinのコレクション操作シリーズです。
.NETのWhere()はKotlinだとfilter()だそうで。
Javaと同じですね。
整数1~10を持ったリストを偶数と奇数に分けるサンプルです。
C# / VB.NET
using System; using System.Collections.Generic; using System.Linq; namespace LinqSample { class Program { static void Main(string[] args) { var myNums = new List<int> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; var myEvenNums = myNums.Where(x => x % 2 == 0); // 偶数 var myOddNums = myNums.Where(x => x % 2 == 1); // 奇数 Console.WriteLine($"Even nums : [{String.Join(", ", myEvenNums)}]"); Console.WriteLine($"Odd nums : [{String.Join(", ", myOddNums)}]"); } } }
Imports System.Collections.Generic Module MainModule Sub Main() Dim myNums As New List(Of Integer) From {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} Dim myEvenNums = myNums.Where(Function(x) x Mod 2 = 0) '偶数 Dim myOddNums = myNums.Where(Function(x) x Mod 2 = 1) '奇数 Console.WriteLine($"Even nums : [{String.Join(", ", myEvenNums)}]") Console.WriteLine($"Odd nums : [{String.Join(", ", myOddNums)}]") End Sub End Module
Kotlin
fun main(args: Array<String>) { val nums = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) val evenNums = nums.filter { x -> x % 2 == 0 } // 偶数 val oddNums = nums.filter { x -> x % 2 == 1 } // 奇数 println("Even nums : [${evenNums.joinToString(", ")}]") println("Odd nums : [${oddNums.joinToString(", ")}]") }
Java
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.*; class StreamSample01 { public static void main(String args[]) { List<Integer> nums = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); Stream<Integer> evenNums = nums.stream().filter(x -> x % 2 == 0); // 偶数 Stream<Integer> oddNums = nums.stream().filter(x -> x % 2 == 1); // 奇数 System.out.println("Even nums : [" + String.join(", ", evenNums.map(x -> x.toString()).collect(Collectors.toList())) + "]"); System.out.println("Odd nums : [" + String.join(", ", oddNums.map(x -> x.toString()).collect(Collectors.toList())) + "]"); } }
う~ん、Javaはソースコードが長くなっちゃいますね。。。
Kotlinはすっきりと書けます。
パッと見も気持ちいいですね。