Kotlinを使用してリスト内の要素を検索する
1. 概要
このチュートリアルでは、Kotlin言語を使用してリスト内の要素を見つける方法を見ていきます。 また、このリストを条件でフィルタリングします。
2. リスト内の要素を検索する
バットマンとして出演した俳優のリストがあるとしましょう。
var batmans: List<String> = listOf("Christian Bale", "Michael Keaton", "Ben Affleck", "George Clooney")
そして、「最初のバットマン」(ティムバートンの映画から)–マイケルキートンを見つけたいとしましょう。
Kotlinでは、 find を使用して、指定された述語に一致する最初の要素を返すことができます。
val theFirstBatman = batmans.find { actor -> "Michael Keaton".equals(actor) }
assertEquals(theFirstBatman, "Michael Keaton")
ただし、そのような要素が見つからない場合、検索はnullを返します。
3. リスト内の要素をフィルタリングする
一方、batmansリストをフィルタリングします。
私たちは、最もクールなバットマン俳優を維持したいと思っています。 繰り返しになりますが、それはオリジナルのマイケル・キートンであり、ノーランの三部作であるクリスチャン・ベールのものです。
その場合は、 filter 関数と述語を使用して、最もクールなバットマンを含むリストを取得しましょう。
val theCoolestBatmans = batmans.filter { actor -> actor.contains("a") }
assertTrue(theCoolestBatmans.contains("Christian Bale") &&
theCoolestBatmans.contains("Michael Keaton"))
または、そのような要素が述語に一致しない場合は、空のリストを取得します。
4. FilterNotを使用してリスト内の要素をフィルタリングする
また、filterNotを使用して逆フィルターを使用できます。
val theMehBatmans = batmans.filterNot { actor -> actor.contains("a") }
assertFalse(theMehBatmans.contains("Christian Bale") &&
theMehBatmans.contains("Michael Keaton"))
assertTrue(theMehBatmans.contains("Ben Affleck") &&
theMehBatmans.contains("George Clooney"))
5. 結論
このチュートリアルでは、Kotlinをリストとともに使用して、その上の要素を検索およびフィルタリングすることがいかに簡単であるかを見てきました。
詳細については、Kotlinの公式検索ドキュメント、フィルタードキュメント、およびfilterNotドキュメントを参照してください。
いつものように、このチュートリアルで使用されるすべての例は、GitHubでから入手できます。