繰り返し処理
Scalaなどでもお馴染みのrubyのように、each_widh_indexみたいなので添字付きでぐるぐるまわすことはできないのかな。
var arr1 = array(1, 2, 3, 4) arr1.forEach {println(it)}
配列の各要素を連結
おなじみのjoin関数を使って連結出来る。// カンマで連結 arr.join(",") // -> 1,2,3,4 // プレフィックス、サフィックスを指定して連結 arr.join(",", "<", ">") // -> <1,2,3,4>
要素の中身全てが指定した条件を満たすかチェック
all関数を使用する。条件は、all関数の引数として指定してあげる。// 全ての要素で条件をみたすことができない場合 var arr1 = array(1, 1, 1, 0) arr1.all {it == 1} // -> false // 全ての要素で条件をみたすことが出来る場合 var arr2 = array(1, 1, 1, 1) arr2.all {it == 1} // -> true // 文字列の場合 var str = array("1", "2", "3") str.all {it <= "3"} // -> true str.all {it <= "2"} // -> false
要素の中のどれか1つが指定した条件を満たすかチェック
any関数を使用するる。条件は、any関数の引数として指定してあげる。// 要素ないに1つでも条件を満たす値がある場合 var arr1 = array(1, 0, 2, 0) arr1.any {it == 1} // -> true // 要素ないの値が全て条件を満たさない場合 var arr2 = array("1", "2", "3") arr2.any{it > "3"} // -> false
要素の中で条件を満たす最初の値を取得する
他の言語でもお馴染みのfind関数を使います。使い方も他の言語と同じですね。var arr1 = array(1, 0, 2, 0) // 要素が見つかる場合 arr1.find {it == 0} // -> 0 arr1.find {it == 2} // -> 2 // 要素が見つからない場合 arr1.find {it == -1} // -> null
要素の中で条件に一致したものを新しい配列で取得する
他の言語(Scala)でもお馴染みのfilter関数を使います。使い方も他の言語と同じですね。var arr1 = array(1, 0, 2, 0) arr1.filter {it % 2 == 0} // -> [0, 2, 0] var arr2 = array("1", "2", "3") arr2.filter {it.length() == 1} // -> ["1", "2", "3"] // 条件に一致する要素が存在しない場合は、空の配列が戻ってきます。 arr2.filter {it.length() != 1} // -> []
要素の中で条件に一致しないものを新しい配列で習得する
filterの逆ですね。これも他の言語(Scala)でもお馴染みのfilterNot関数を使います。使い方も他の言語と同じですね。var arr1 = array(1, 0, 2, 0) arr1.filterNot {it % 2 == 0} // -> [1] var arr2 = array("1", "2", "3") arr2.filterNot {it.length() != 1} // -> ["1", "2", "3"] arr2.filterNot {it.length() == 1} // -> []
各要素の値を変換して新しいCollectionを取得する。
ScalaにもあるflatMapを使ってあげるといけます。引数の型パラメータと戻りの型パラメータが異なるから、flatMapに型パラメータ指定してあげないと動かなかった。
なんか間違ってるのかな?
ちなみに、arrayListやlinkedList関数は、「std.utilパッケージ」にあるのでimportしてあげないと使えないです。
// 各要素の値を2倍にする。 var arr1 = array(1, 2, 3) arr1.flatMap<Int, Int> {(n) -> arrayList(n * 2)} // -> [2, 4, 6] // 各要素先頭にstr =を加える。 var arr2 = array("1", "2", "3") arr2.flatMap<String, String>{(s) -> linkedList("str = ${s}")} // -> [str = 1, str = 2, str = 3]