Kotlinの初心者向け問題3-1:ArrayListを使おう
この問題を解くために必要な知識:
【レベル1~2の知識】
コメントの書き方、変数と定数、基本データ型、算術演算と論理演算、入力と出力、import文、配列、分岐処理(if、if~else、when)、繰り返し処理(for、while、do~while)、Null安全、スマートキャスト、関数の定義と呼び出し、関数の戻り値、関数のオーバーロード、ラベルとジャンプ、例外処理、クラスの定義と使用、インスタンス、コンストラクタ、プロパティ、クラスの継承、クラスの拡張
【レベル3の知識】
コレクションの基礎、リストコレクション(MutableList、ArrayList)、セットコレクション(HashSet、MutableSet、TreeSet)、マップコレクション(HashMap、MutableMap、TreeMap)
<<前の問題 | 問題集Top |
次の問題>> |
Kotlinの文法「ArrayList」とは
ここではArrayListの意味や使い方を復習します。必要ない方はここをクリックして練習問題へ飛びましょう。
Kotlinでは、リストを使って複数のデータを管理することができます。
その中でも、ArrayList
は要素を動的に追加・削除できる便利なデータ構造です。
本記事では、ArrayList
の基本的な使い方や操作方法について学び、実際にKotlinでの使用例も確認していきます。
ArrayListとは?
ArrayList
は、動的な配列です。通常の配列(Array
)はサイズが固定されていますが、ArrayList
はサイズを変更することができます。
つまり、要素を追加・削除するたびに、必要に応じて自動的にサイズが調整されます。また、ArrayList
は順序を保持し、同じ型の要素を格納することができます。
ArrayListの定義と作成方法
KotlinでArrayList
を使用するためには、以下のように定義します。まずは、ArrayList
を初期化する方法を確認しましょう。
// 空のArrayListを作成 val numbers = ArrayList<Int>() // 初期要素を持つArrayListを作成 val names = arrayListOf("Alice", "Bob", "Charlie")
上記の例では、numbers
はInt
型の空のArrayList
を作成し、names
は文字列を初期要素として持つArrayList
を作成しています。
ArrayListの基本操作
ArrayList
の基本的な操作として、要素の追加、取得、削除、サイズの確認などがあります。以下に、いくつかの代表的な操作方法を示します。
要素の追加
val fruits = arrayListOf("Apple", "Banana") // 要素の追加 fruits.add("Orange")
上記のコードでは、fruits
というリストに新しく”Orange”を追加しています。
要素の取得
// インデックスを指定して要素を取得 val firstFruit = fruits[0] println(firstFruit) // 出力: Apple
ArrayList
はインデックスを使って要素を取得することができ、0番目の要素から順にアクセスできます。
要素の削除
// 指定したインデックスの要素を削除 fruits.removeAt(1) println(fruits) // 出力: [Apple, Orange]
removeAt
メソッドを使って、指定したインデックスの要素を削除できます。
サイズの確認
// リストのサイズを取得 val size = fruits.size println(size) // 出力: 2
size
プロパティを使うことで、リストの現在の要素数を確認できます。
ArrayListの使用例
ここでは、ArrayList
を使った簡単な使用例を紹介します。この例では、ユーザーが入力した整数値をリストに追加し、合計を計算するプログラムです。
fun main() { val numbers = ArrayList<Int>() numbers.add(10) numbers.add(20) numbers.add(30) var sum = 0 for (number in numbers) { sum += number } println("合計は: $sum") }
このプログラムでは、ArrayList
に10
, 20
, 30
という数値を追加し、それらをループで合計して表示しています。
このように、ArrayList
はデータの管理や操作を効率的に行うことができます。
まとめ
KotlinのArrayList
は、サイズが変動するリストとして非常に便利です。
要素の追加や削除、インデックスを用いたアクセスが可能で、さまざまなシーンで使用できます。基
本操作を理解することで、効率的にデータを扱うことができるようになるでしょう。
Kotlin練習問題3-1_ArrayListを使おう
この問題では整数のArrayListを操作します。
まずユーザーが指定した数字を全てリストに保存し、保存完了後には一覧として表示しましょう。
その後ユーザーが再び数字を指定すると、リストにその数字があるか探し、ある場合はそれをリストから削除しましょう。
この問題の要件
以下の要件に従ってプログラムを作成して下さい。
ArrayList<Int>
型のリストを作成すること。- ユーザーにリストに追加する整数を入力させること。ユーザーが0を入力するまで入力を繰り返し、0が入力されたら入力を終了すること。
- 入力が終了したら、リストの内容を表示すること。
- リストに特定の整数が含まれているかをユーザーに確認させること。特定の整数がリストに含まれていた場合、その整数をリストから削除し、「削除しました」と表示すること。含まれていなかった場合は「含まれていません」と表示すること。
- 最終的に更新されたリストの内容を表示すること。
ただし、以下のような実行結果となること。
----- ↓出力される結果の例↓ -----
リストに追加する数字を入力してください。0を入力すると終了します。 数字を入力: 5 数字を入力: 10 数字を入力: 3 数字を入力: 0 リストの内容: [5, 10, 3] 検索する数字を入力してください: 10 10 はリストに含まれています。削除します。 更新されたリストの内容: [5, 3] プログラムを終了します。
----- ↑出力される結果の例↑ -----
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
正解のコードは上から順に以下のような構成となっています。
1.main関数の定義
1-1. 関数の開始
1-2. コメントの書き方
1-3. ArrayListオブジェクトの作成
1-4. リストに数字を追加するための入力プロンプト表示
1-5. 無限ループ(while)で数字の入力を継続
1-5-1. 数字の入力を求めるメッセージを表示
1-5-2. ユーザー入力を受け取る
1-5-3. 入力値を整数に変換し、null安全な処理を実行
1-5-4. 入力値が0の場合、ループを終了
1-5-5. 入力された整数をリストに追加
1-6. リストの内容を表示
1-7. リスト内に特定の数字が含まれているかを確認する入力プロンプト表示
1-8. ユーザー入力を受け取り、整数に変換
1-9. 数字の存在確認と削除処理
1-9-1. 数字がリストに含まれている場合の処理
1-9-2. 数字がリストに含まれていない場合の処理
1-10. 更新されたリストの内容を表示
1-11. プログラム終了メッセージを表示
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
fun main() { // 整数を格納するリストを作成 val numbers = arrayListOf<Int>() // リストに数字を追加する println("リストに追加する数字を入力してください。0を入力すると終了します。") while (true) { print("数字を入力: ") /* @@@ユーザー入力を受け取り、その値を整数に変換してnumに代入するコードを書いてください@@@ */ val input = readLine() val num = input?.toIntOrNull() ?: continue if (num == 0) { break } numbers.add(num) } // リストの内容を表示 println("リストの内容: $numbers") // リストに特定の数字が含まれているかを確認する print("検索する数字を入力してください: ") /* @@@ユーザー入力を受け取り、その値を整数に変換してsearchNumに代入するコードを書いてください@@@ */ val searchInput = readLine() val searchNum = searchInput?.toIntOrNull() ?: run { println("有効な整数を入力してください。") return } if (numbers.contains(searchNum)) { println("$searchNum はリストに含まれています。削除します。") /* @@@リストからsearchNumを削除するコードを書いてください@@@ */ numbers.remove(searchNum) } else { println("$searchNum はリストに含まれていません。") } // 更新されたリストの内容を表示 println("更新されたリストの内容: $numbers") println("プログラムを終了します。") }
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
解答例
この問題の一つの正解例とそのコードの解説を以下に示します。
正解コードの例
例えば以下のようなプログラムが考えられます。
********************
fun main() { // 整数を格納するリストを作成 val numbers = arrayListOf<Int>() // リストに数字を追加する println("リストに追加する数字を入力してください。0を入力すると終了します。") while (true) { print("数字を入力: ") val input = readLine() val num = input?.toIntOrNull() ?: continue if (num == 0) { break } numbers.add(num) } // リストの内容を表示 println("リストの内容: $numbers") // リストに特定の数字が含まれているかを確認する print("検索する数字を入力してください: ") val searchInput = readLine() val searchNum = searchInput?.toIntOrNull() ?: run { println("有効な整数を入力してください。") return } if (numbers.contains(searchNum)) { println("$searchNum はリストに含まれています。削除します。") numbers.remove(searchNum) } else { println("$searchNum はリストに含まれていません。") } // 更新されたリストの内容を表示 println("更新されたリストの内容: $numbers") println("プログラムを終了します。") }
********************
コードの解説
このコードは、ユーザーから整数を入力してリストに追加し、特定の数字を検索・削除するプログラムです。
KotlinのArrayList
を使用して、リストの動的な操作を学ぶことができます。各ブロックごとに解説していきます。
ArrayListの作成
val numbers = arrayListOf<Int>()
最初に、ArrayList
を作成します。ここではInt
型のデータを格納する空のリストを定義しています。
ArrayList
は、サイズが動的に変わるリストで、要素を自由に追加・削除できます。
ユーザーからの入力を受け取る
println("リストに追加する数字を入力してください。0を入力すると終了します。") while (true) { print("数字を入力: ") val input = readLine() val num = input?.toIntOrNull() ?: continue if (num == 0) { break } numbers.add(num) }
この部分では、ユーザーに数値を入力させ、その値をArrayList
に追加しています。
readLine()
を使ってユーザーからの入力を受け取り、それを整数に変換します。
もし有効な整数が入力されなければ、再度入力を促します。また、0
が入力された場合にはループを終了します。
リストの内容を表示
println("リストの内容: $numbers")
入力された数値をArrayList
に追加した後、リストの内容をそのまま表示します。ArrayList
の要素は$numbers
と書くだけで簡単に表示できます。
特定の数値を検索して削除
print("検索する数字を入力してください: ") val searchInput = readLine() val searchNum = searchInput?.toIntOrNull() ?: run { println("有効な整数を入力してください。") return }
ここでは、ユーザーが検索したい数値を入力させます。
readLine()
で取得した入力を整数に変換し、もし有効な数値が入力されなければエラーメッセージを表示します。
if (numbers.contains(searchNum)) { println("$searchNum はリストに含まれています。削除します。") numbers.remove(searchNum) } else { println("$searchNum はリストに含まれていません。") }
次に、ArrayList
内に指定した数値が存在するかどうかを確認します。
contains
メソッドを使ってリスト内にその値が存在するか調べ、存在する場合は削除します。存在しない場合は、その旨を表示します。
更新されたリストの表示
println("更新されたリストの内容: $numbers")
最後に、数値を削除した後のArrayList
の内容を表示します。この操作により、リストが動的に更新される様子を確認できます。
プログラムの終了
println("プログラムを終了します。")
全ての操作が完了したら、プログラムを終了します。
<<前の問題 |
問題集Top |
次の問題>> |
この問題への質問・コメント
この問題を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。