ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Java で要素数を取得する方法
Java のコレクション (List / Set / Map) と配列では、要素数の取得方法が異なります。コレクションは size() メソッド、配列は length フィールド。混同しがちなので注意。
List.size() — 基本構文
import java.util.ArrayList;
import java.util.List;
List<String> list1 = new ArrayList<>();
list1.add("a");
list1.add("b");
list1.add("c");
System.out.println(list1.size());
// 出力: 3
List.of() で初期化したリスト
// Java 9+
List<String> list = List.of("a", "b", "c");
System.out.println(list.size()); // 3
// List.of は不変リストを返す。add() 等は UnsupportedOperationException
配列の length
配列はメソッドではなくフィールドです。括弧を付けません。
int[] nums = {10, 20, 30, 40, 50};
System.out.println(nums.length); // 5
String[] names = new String[10];
System.out.println(names.length); // 10 (全要素 null だが length は 10)
// 多次元配列の長さ
int[][] grid = new int[3][5];
System.out.println(grid.length); // 3 (行数)
System.out.println(grid[0].length); // 5 (列数)
size() と length の使い分け早見表
| 対象 | 取得方法 | 戻り値 |
|---|---|---|
配列 (int[] など) | arr.length | int |
String | str.length() | int (文字数) |
List / Set | list.size() | int |
Map | map.size() | int (キー数) |
Stream | stream.count() | long |
Collection (インターフェース) | collection.size() | int |
空判定は isEmpty() を使う
size() == 0 よりも isEmpty() が推奨です。可読性が高く、一部の実装ではより高速。
List<String> list = new ArrayList<>();
// 推奨
if (list.isEmpty()) {
System.out.println("空です");
}
// 非推奨 (動くが冗長)
if (list.size() == 0) {
System.out.println("空です");
}
// LinkedList などでは size() が O(1) でない実装もある (現代の JDK は O(1) だが)
null チェック
リスト自体が null だと size() 呼び出しで NullPointerException が発生します。
List<String> list = null;
// NG
// int n = list.size(); // NullPointerException
// 安全な書き方
if (list != null && !list.isEmpty()) {
// 処理
}
// Java 11+
import java.util.Objects;
if (!Objects.requireNonNullElse(list, List.of()).isEmpty()) {
// ...
}
// Collections.emptyList() で null を避ける設計
List<String> safe = list != null ? list : Collections.emptyList();
int n = safe.size();
Stream の count()
Stream API では count() で要素数を取得します。戻り値は long なので注意。条件フィルタとの組み合わせが強力。
import java.util.List;
List<Integer> nums = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// 全体の数
long total = nums.stream().count();
System.out.println(total); // 10
// 偶数の数
long evens = nums.stream()
.filter(n -> n % 2 == 0)
.count();
System.out.println(evens); // 5
// 文字列の長さでフィルタ
List<String> words = List.of("apple", "banana", "cherry", "fig");
long longWords = words.stream()
.filter(w -> w.length() > 4)
.count();
System.out.println(longWords); // 3 (apple, banana, cherry)
Map の要素数
import java.util.HashMap;
import java.util.Map;
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
System.out.println(map.size()); // 3 (キー数)
System.out.println(map.keySet().size()); // 3
System.out.println(map.values().size()); // 3 (重複あっても全カウント)
パフォーマンス特性
| 実装 | size() 計算量 |
|---|---|
ArrayList | O(1) |
LinkedList | O(1) (内部カウントを保持) |
HashMap / HashSet | O(1) |
ConcurrentHashMap | O(n) の場合あり (並行更新中) |
Stream.count() | O(n) (要素を走査) |
FAQ
Q: なぜ配列だけ length でメソッドじゃないのか
A: 配列は Java の言語仕様レベルのオブジェクトで、length は特殊なフィールド扱い。互換性のため変更されていない。
Q: String の文字数を size() で取れない
A: String は length() メソッド。Java の歴史的経緯で配列の length と紛らわしいが、こちらはメソッド (括弧あり)。
Q: size() と Stream.count() どちらが速い?
A: コレクションがあるなら必ず size()。Stream は中間操作を遅延評価のため、count() はそれらを走査する必要があり遅い。
関連
- リスト要素の更新 (Python 版)
- ArrayList / LinkedList の違い
- Collections / Stream API
- String.length() vs char[].length
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?