配列(リスト)の先頭の要素を取得するには (first / head / headOption)

各プログラミング言語での、配列(リスト)の先頭の要素を取得する方法。

Go言語 arr[0]
Javaの配列 arr[0]
JavaのList lst.get(0)
Scala lst.head
PHP $arr[0]
Ruby arr.first
Perl $arr[0]

Go言語 (golang)

インデックス0の要素にアクセスする。サイズが0の場合はpanicが発生する。配列とスライスとどちらも同じ。

arr[len(arr) - 1]

Java

配列

インデックス0の要素にアクセスする。サイズが0の場合は例外が発生する。

int[] arr = {3, 5, 7, 9};

// 配列の先頭の要素を取得
System.out.println(arr[0]); // => 3

java.util.List

インデックス0の要素にアクセスする。サイズが0の場合は例外が発生する。

ArrayList<Integer> lst = new ArrayList<>();
lst.add(3);
lst.add(5);
lst.add(7);
lst.add(9);

// 配列の先頭の要素を取得
System.out.println(lst.get(0)); // => 3

Scala

Signature:

空のSeqに対してheadを呼び出すと、 java.util.NoSuchElementException の例外がスローされてしまう。

PHP

$arr = array(10, 20, 30, 40, 50);
echo $arr[0];
// => 10

もちろん、これは配列のインデックスが0から始まっていることが前提となっているので、以下の例ではうまくいかない。

$arr = array(1 => 20, 2 => 30, 5 => 50);
echo $arr[0];
// => Notice: Undefined offset: 0

この場合、reset関数を使うといいらしい。

$arr = array(1 => 20, 2 => 30, 5 => 50);
echo reset($arr);
// => 20

reset関数はインデックスに関係なく最初の要素が返されるので、以下の例では場合によっては意図しない挙動になる。

$arr = array();
$arr[1] = 20;
$arr[0] = 10;

echo reset($arr);
// => 20
// インデックス0ではなく、最初に挿入された要素!

配列が空の場合は、 $arr[0] はNoticeが発生し、reset($arr)falseが返される。

$arr = array();

echo $arr[0];
// => Notice: Undefined offset: 0
var_export(reset($arr));
// => false

reset 関数 | PHP Manual
http://php.net/manual/ja/function.reset.php

Ruby / JRuby

Array#first というメソッドを使う。配列が空の場合は nil になる。

arr = [10, 20, 30, 40, 50]

# 先頭の要素
p arr.first
p arr[0]
# => 10

firstは数字を引数で与えると、先頭からその数だけ要素を抜き出して、配列で返してくれる。

arr = [10, 20, 30, 40, 50]

p arr.first
# => 10
p arr.first(1)
# => [10]
p arr.first(3)
# => [10, 20, 30]

Array#first | Ruby 2.1 リファレンスマニュアル
http://docs.ruby-lang.org/ja/2.1.0/method/Array/i/first.html

sh (シェルスクリプト)

テキストファイルの最初の行を取得する方法

# 最初の1行を出力
sed '1!d'
# または
head -n1

関連

  1個 n個
最初の○○以外の要素を取得するには tail drop
最初の○○の要素を取得するには head take
最後の○○の要素を取得するには last  
このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。
スポンサーリンク