Javaで「要素の数」や「長さ」を取得する書き方は、対象によって異なるのが初心者のつまずきポイントです。コレクションは size()、配列は length、文字列は length() と、似ているようで微妙に違います。この記事で正しい使い分けを整理します。
この記事の結論:List・Set・Mapは
size()(メソッド)、配列は .length(フィールド・カッコなし)、文字列は .length()(メソッド・カッコあり)です。この3つの違いを押さえれば迷いません。コレクション(List・Set・Map)のサイズ:size()
List・Set・Map などのコレクションは、すべて size() メソッドで要素数を取得します。
List / Set / Map の size()
import java.util.*;
List<String> list = new ArrayList<>(List.of("Apple", "Banana", "Orange"));
System.out.println(list.size()); // 3
Set<Integer> set = new HashSet<>(Set.of(10, 20, 30));
System.out.println(set.size()); // 3
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
System.out.println(map.size()); // 2(キーの数)
Set は重複を持てないため、同じ値を追加しても size() は増えません。Map の size() はキーの数を返します。配列の長さ:.length(フィールド)
配列はコレクションではないため size() は使えません。length フィールド(カッコなし)で長さを取得します。
配列は .length(() を付けない)
int[] numbers = {10, 20, 30, 40};
System.out.println(numbers.length); // 4(() は付けない)
String[] fruits = {"Apple", "Banana"};
System.out.println(fruits.length); // 2
文字列の長さ:length()(メソッド)
文字列は length() メソッド(カッコあり)で文字数を取得します。配列の length とは違ってカッコが必要な点に注意してください。
文字列は length()(() を付ける)
String text = "Hello"; System.out.println(text.length()); // 5(() が必要)
文字列と配列の長さ取得の詳細(サロゲートペアの注意など)は文字列と配列の長さを取得する方法で解説しています。
size()・length・length()の違い(早見表)
| 対象 | 書き方 | 種類 |
|---|---|---|
| List / Set / Map | コレクション.size() |
メソッド(()あり) |
| 配列 | 配列.length |
フィールド(()なし) |
| 文字列(String) | 文字列.length() |
メソッド(()あり) |
よくある間違い:配列に
numbers.length() と書く(→ コンパイルエラー。配列はフィールドなので () 不要)、逆に文字列に text.length と書く(→ エラー。文字列はメソッドなので () が必要)。「配列だけ () なし」と覚えると混乱しません。サイズが0か(空か)を判定する
「要素が空かどうか」を調べるなら、size() == 0 よりisEmpty() のほうが意図が明確で読みやすくなります(コレクション・文字列の両方で使えます)。
isEmptyで空判定
List<String> list = new ArrayList<>();
System.out.println(list.isEmpty()); // true
String text = "";
System.out.println(text.isEmpty()); // true
// 配列は isEmpty が無いので length で判定
int[] arr = {};
System.out.println(arr.length == 0); // true
リストが空でないことを確認してから使う安全な書き方はリスト内の特定の項目が空でないか確認して使用する方法、先頭要素の取得はリストの先頭要素を取得する方法を参照してください。
よくある質問(FAQ)
Qsize()とlengthはどう使い分けますか?
AList・Set・Mapは
size()(メソッド)、配列は length(フィールド、カッコなし)です。コレクションか配列かで書き方が変わります。Q配列にsize()を使うとエラーになります。
A配列には
size() はありません。配列.length(カッコなし)を使います。length() と書くのも誤りで、配列の length はメソッドではなくフィールドです。Q文字列の長さはlengthですか、length()ですか?
A文字列は
length() メソッド(カッコあり)です。配列の length(カッコなし)と混同しやすいので注意してください。Q空かどうかを調べる良い方法は?
Aコレクションや文字列は
isEmpty() が読みやすく推奨です。配列には isEmpty() が無いので 配列.length == 0 で判定します。まとめ
Javaでサイズ・要素数を取得するポイントを整理します。
- List・Set・Mapは
size()(メソッド) - 配列は
.length(フィールド・()なし) - 文字列は
.length()(メソッド・()あり) - 「配列だけ
()なし」と覚えると混乱しない - 空判定はコレクション・文字列なら
isEmpty()が読みやすい
関連として、文字列と配列の長さを取得する方法・リストが空でないか確認して使う方法・リストの先頭要素を取得する方法もあわせて読むと、Javaのコレクション操作に強くなれます。

