徒然エンジニアブログ

徒然エンジニアブログ

理系東大生がプログラミングを中心に様々なことについて情報発信していきます!

【Swift】配列の基本から応用〜これさえわかればSwiftの配列は完璧!!〜

多くのプログラミング言語と同様に、Swiftにも配列という概念があります。

配列とは変数をまとめる機能のことです。
Int型、String型など多くの方の変数をまとめて扱うことができます。


もちろんアプリを開発するときにも多く使われます。
今回はそんな配列の基礎から応用までを一気に紹介したいと思います。

配列の初期化

まずは一番初めなので配列を作るところから始めます。

//値を入れて配列を作る
let numbers = [0,1,2]

//値を入れずに配列を作る
var stringArray:[Int] = []
var doubleArray:Array<Double> = []
var doublenumbers = [Double]()

配列を作るときには初めから値を入れておく方法と、とりあえず配列だけ作って後から変数を入れておく方法との二種類があります。
後から値を入れる場合の時は必ずvarで宣言しておいてください。そうしないと追加することができません。


また初めから値を入れる場合は入れた値の型を自動で判別してくれるので型を明記する必要はありません。
後から入れる場合は必ずどの型かわかるように2 ~4行目のように書く必要があります。
この書き方はどちらでも構いません。


また配列は最初に言ったように複数の値をまとめて扱うためのものです。
そのため変数名は例のように複数形やArrayz~という場合が多いです。
こうしておくと名前を見ただけでこれは配列だとわかるからです。

配列の特徴を知りたい時

配列の要素の数を取得する

配列の要素の数を知りたい時は以下のコードで取得することができます。

let numbers = [0,1,2]
print(numbers.count)

こうすると3と出力されます。
配列の要素数は(配列の名前).countで取得できます。

配列が空かどうか判定する

let numbers = [0,1,2]
//falseとprintされる
print(numbers.isEmpty)

配列が空だとtrue、空じゃない時はfalseになります。

配列の要素にアクセスする

任意の要素にアクセス

let numbers = [0,1,2]
//2番目の要素である2が出力される
print(numbers[2])

プログラミングを過去にやったことがある人には常識かもしれませんが、配列の要素の最初は0から始まることに注意してください。


この時要素がないところにアクセスしようとするとエラーになるので気をつけてください。
要素の数を3にした時、三番目の要素はないので気をつけてください。これは先ほども言ったように最初の要素を0番目のものとするからです。

一番最初の要素にアクセス

let numbers = [0,1,2]
//最初の要素である0が出力される
print(numbers.first!)

(配列の名前).firstで配列の一番最初の要素にアクセスすることができます。
ただし気をつけばければならないのはこれで取得できるのはオプショナル型だということです。

そこで今回はfirstの後に!をつけてアンラップしています。

一番最後の要素にアクセス

let numbers = [0,1,2]
//最後の要素である2が出力される
print(numbers.last!)

これはfirstの時とほぼ同じなので解説は省きます。

ランダムに要素にアクセス

ランダムに要素にアクセスするには以下のようにします。

let numbers = [0,1,2]
//ランダムで0か1か2が出力される
print(numbers.randomElement()!)

これも先ほどと同様にオプショナル型になっています。
そこで必要に応じてアンラップする必要があります。

配列の要素を追加する

配列の最後に付け加える

var number:[Int] = [0,1,2]
number.append(3)
//[0, 1, 2, 3]が出力される
print(number)

このように(配列の名前).append(追加したい値)として使います。
元の配列がInt型であった場合String型などの他の型の値を追加しようとするとエラーになるので気をつけてください。

任意の場所に追加する

先ほどのappendは最後に追加することしかできませんでした。
任意の場所に追加痛い時は以下のようにします。

var number:[Int] = [0,1,2]
number.insert(3, at: 1)
//[0, 3, 1, 2]と出力される
print(number)

(配列の名前).insert(追加したい値,追加したい場所の番号)とします。
この時追加したところより後ろの数は番号が変わることに注意してください。

配列の要素を削除する

任意の場所の要素を削除

任意の要素を削除したい時は以下のようにします。

var number:[String] = ["A","B","C"]
number.remove(at: 1)
//["A", "C"]と出力される
print(number)

このように場所を指定することで任意の場所の要素を消すことができます。

最初の要素を削除

最初の要素を削除したい時は以下のようにします。

var alphabets:[String] = ["A","B","C"]
alphabets.removeFirst()
//["B", "C"]と出力される
print(alphabets)

これは単純に一番最初の要素を消すだけです。

これの応用として

alphabets.removeFirst(2)

とすると最初から二つ分の要素を消すことができます。

最後の要素を削除

最後の要素を削除したい時は以下のようにします。

var alphabets:[String] = ["A","B","C"]
alphabets.removeLast()
//["A", "B"]と出力される
print(alphabets)

これも応用として

alphabets.removeLast(2)

とすることで最後から二つ分の要素を消すことができます。

全ての要素を削除

全ての要素を削除したい時は以下のようにします。

var alphabets:[String] = ["A","B","C"]
alphabets.removeAll()
//[]と出力される
print(alphabets)

配列の要素を消すだけで配列そのものは無くならないということに注意してください。