Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaでTreeSetを反復処理する2つの方法:Iteratorと拡張forループの使い方を解説


TreeSetAbstractSetクラスのサブクラスであり、NavigableSetインターフェースを実装しています。デフォルトでは、TreeSetは要素を昇順で出力し、ソートにはComparableインターフェースを使用します。また、TreeSetには同じ型の要素のみを追加する必要があります。異なる型を混在させると、内部でComparableインターフェースによる比較が行われるため、ClassCastExceptionが発生する恐れがある点に注意しましょう。

構文

public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, Serializable

TreeSetを反復処理(イテレーション)する方法は、大きく分けて以下の2つがあります。

方法1:Iteratorを使う

Iteratorインターフェースを使用すると、TreeSetの要素を先頭から順番に1つずつ取り出して処理できます。

コード例

import java.util.*;
public class IteratingTreeSetTest {
    public static void main(String[] args) {
        Set<String> treeSetObj = new TreeSet<String>();
        treeSetObj.add("Ramesh");
        treeSetObj.add("Adithya");
        treeSetObj.add("Jai");
        treeSetObj.add("Vamsi");
        treeSetObj.add("Chaitanya");
        Iterator<String> it = treeSetObj.iterator(); // Iteratorインターフェース
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

実行結果

Adithya
Chaitanya
Jai
Ramesh
Vamsi

出力を見ると、追加した順序に関係なく、要素がアルファベットの昇順に並んで表示されていることがわかります。

方法2:拡張forループ(for-each)を使う

for-eachループを使用すれば、より簡潔な記述でTreeSetの要素を反復処理できます。

コード例

import java.util.*;
public class IteratingTreeSetForEachTest {
    public static void main(String[] args) {
        Set<String> treeSetObj = new TreeSet<String>();
        treeSetObj.add("India");
        treeSetObj.add("Australia");
        treeSetObj.add("West Indies");
        treeSetObj.add("South Africa");
        treeSetObj.add("England");
        for(String str : treeSetObj) { // for-eachループ
            System.out.println(str);
        }
    }
}

実行結果

Australia
England
India
South Africa
West Indies

まとめ

TreeSetの反復処理には「Iterator」と「拡張forループ(for-each)」の2つの方法があります。単純にすべての要素を処理したい場合は可読性の高いfor-eachループが便利です。一方、条件に応じて要素を削除しながら処理したい場合など、細かい制御が必要な場面ではIteratorが適しています。さらに、降順で反復処理したい場合はdescendingIterator()メソッドを使うこともできるので、用途に応じて使い分けるとよいでしょう。

  1. JavaでJTextFieldにパディングを追加する方法【setMarginの使い方】

    JTextFieldはJTextComponentクラスのサブクラスであり、ユーザーが1行形式でテキストを入力できる、Swingの中でも特に重要なコンポーネントの一つです。JTextFieldでは、ユーザーが入力を行う際にActionListenerインターフェースを通じてアクションイベントが発生します。主なメソッドとしては、setText()、getText()、setBorder()、setEnabled()などが挙げられます。 JTextFieldにパディング(内側の余白)を追加したい場合は、JTextComponentクラスが提供するsetMargin(Insets m)メソッドを使用

  2. 【Java】JTableのセルにJButtonを追加・挿入する方法を解説

    JTableはJComponentクラスのサブクラスであり、複数の行と列から構成されるテーブル形式のデータを表示するためのSwingコンポーネントです。JTable上で値が選択されるとTableModelEventが発生し、TableModelListenerインターフェースを実装することでそのイベントを処理できます。 JTableのセルにJButtonを追加・挿入したい場合は、DefaultTableModelやAbstractTableModelのコードをカスタマイズするとともに、TableCellRendererインターフェースを実装し、getTableCellRendererCompo