ホームページ > Java > &#&チュートリアル > 大規模なデータセットを含む JTable から選択した行を効率的に取得するにはどうすればよいですか?

大規模なデータセットを含む JTable から選択した行を効率的に取得するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-26 02:28:09
オリジナル
842 人が閲覧しました

How Can I Efficiently Retrieve Selected Rows from a JTable with Large Datasets?

AbstractTableModel を使用して JTable から選択された行を効率的に取得する

大規模なデータセットを扱う場合、JTable から選択された行を取得するプロセスが非効率になる可能性がありますこれは、すべての行を順次走査する必要があるためです。この記事では、AbstractTableModel ベースのリスナー メカニズムを使用したより効率的なアプローチを紹介します。

問題ステートメント

行選択の最初の列に JCheckBox がある JTable で、行を選択すると、すべての行を反復処理して、チェックされた行を収集する必要があります。データセットが大きくなるにつれて、これは望ましくないアプローチになります。

推奨される解決策: TableModel リスナーを実装する

解決策には、TableModelListener を JCheckBox 列に追加することが含まれます。リスナー クラス内で JCheckBox の状態が変化する (SELECTED/DESELECTED) と、selectedRows 配列が更新されます。さらに、リスナー クラス内で table.getSelectedRow(..) を呼び出して、選択した行のインデックスを取得できます。

より良い方法はありますか?

提供された例は、TableModel が Set を更新する別のアプローチを示しています。 name は、setValueAt() メソッドの変更時にチェックされます。隣接する JList はこの TableModel にバインドされており、選択された行番号を動的に表示します。このメソッドは、選択された行の数が行の総数に比べて少ない場合に効率的であることがわかります。

実装の詳細

CheckModel クラスは AbstractTableModel を拡張し、rowList とチェックされた行を処理します。設定し、チェックボックスの状態の変化に基づいてそれらを維持します。 DisplayPanel クラスには、テーブル モデルの変更をリッスンし、それに応じて表示を更新する JList が含まれています。

結論

小規模なデータセットの場合は、順次行トラバーサル アプローチで十分な場合がありますが、 TableModel リスナーまたは上記の代替方法を使用すると、大規模なデータセットを扱うときに効率が大幅に向上します。これらの手法により、テーブルのサイズに関係なく、選択した行を効率的に取得できます。

以上が大規模なデータセットを含む JTable から選択した行を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート