Java HashSet size() メソッド
size()このメソッドは Java のHashSetHashSet クラスの組み込みメソッドで、現在のコレクション内の要素の数を返すために使用されます。そのメソッドシグネチャは次のとおりです。
メソッド構文
public int size()
戻り値
このメソッドは、int型の値を返し、HashSetインスタンスに現在保存されている要素の数を表します。
重要な説明
- 戻り値は常に非負の整数です
- 集合が空の場合は 0 を返します
- 戻り値は呼び出し時点の集合のサイズを反映しており、その後の追加・削除操作によってこの値は変わります
使用例
基本的な使い方
例
import java.util.HashSet;
public class HashSetSizeExample {
public static void main(String[] args) {
// 新しい HashSet を作成する
HashSet<String> fruits = new HashSet<>();
// 添加元素
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// 使用size()方法获取集合大小
int size = fruits.size();
System.out.println(HashSetの要素数: + size); // 输出: 3
}
}
public class HashSetSizeExample {
public static void main(String[] args) {
// 新しい HashSet を作成する
HashSet<String> fruits = new HashSet<>();
// 添加元素
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// 使用size()方法获取集合大小
int size = fruits.size();
System.out.println(HashSetの要素数: + size); // 输出: 3
}
}
空の集合の場合
例
HashSet<Integer> numbers = new HashSet<>();
System.out.println("空のHashSetのサイズ: " + numbers.size()); // 输出: 0
System.out.println("空のHashSetのサイズ: " + numbers.size()); // 输出: 0
動的な変化
例
HashSet<Character> letters = new HashSet<>();
System.out.println("初始大小: " + letters.size()); // 输出: 0
letters.add('A');
letters.add('B');
System.out.println("添加后大小: " + letters.size()); // 输出: 2
letters.remove('A');
System.out.println("删除后大小: " + letters.size()); // 输出: 1
System.out.println("初始大小: " + letters.size()); // 输出: 0
letters.add('A');
letters.add('B');
System.out.println("添加后大小: " + letters.size()); // 输出: 2
letters.remove('A');
System.out.println("删除后大小: " + letters.size()); // 输出: 1
技術的な詳細
時間計算量
size()このメソッドの時間計算量は O(1) です。なぜなら、HashSet内部で要素数を追跡するカウンターを維持しており、呼び出しのたびに再計算するわけではないからです。
容量(capacity)との違い
size()返されるのは実際に保存されている要素の数です- 容量とは基盤となるハッシュテーブルのサイズで、コンストラクタで設定できます
- 容量は通常、size 以上です
例
HashSet<String> set = new HashSet<>(100); // 初始容量100
System.out.println(set.size()); // 出力: 0 (まだ要素がないため)
System.out.println(set.size()); // 出力: 0 (まだ要素がないため)
実際の応用シーン
1. 集合が空かどうかを確認する
使用することもできますが、isEmpty()メソッドですが、size() == 0これも一般的な書き方です。
例
if (cartItems.size() == 0) {
System.out.println(買い物かごは空です);
}
System.out.println(買い物かごは空です);
}
2. 集合のサイズを制限する
例
HashSet<User> activeUsers = new HashSet<>();
// ...
if (activeUsers.size() >= MAX_ACTIVE_USERS) {
System.out.println("已达到最大活跃用户数");
}
// ...
if (activeUsers.size() >= MAX_ACTIVE_USERS) {
System.out.println("已达到最大活跃用户数");
}
3. パフォーマンス監視
例
// 異なる時点のコレクションサイズを記録してメモリ使用量を監視します
log.info("当前缓存条目数: " + cache.size());
log.info("当前缓存条目数: " + cache.size());
注意事項
並行環境:
HashSetスレッドセーフではないため、マルチスレッド環境で使用するとsize()不正確な結果になる可能性があります。使用を検討してくださいConcurrentHashMapまたは同期ラッパー。他のコレクションメソッドとの連携:
例
// 先に size をチェックして、不要な操作を避ける
if (set1.size() == set2.size() && set1.containsAll(set2)) {
System.out.println("两个集合相等");
}
メモリに関する考慮事項:大規模な
HashSetHashSet は多くのメモリを占有するため、定期的にチェックしsize()メモリの問題を特定するのに役立ちます。
まとめ
HashSetのsize()このメソッドはシンプルですが非常に便利なツールであり、コレクションの現在の状態のスナップショットをすばやく提供します。このメソッドを理解して正しく使用することで、より効率的で信頼性の高い Java コードを書くことができます。
Java HashSet