並べ替えに関する関連する質問は、この質問への回答に関連している可能性があります。VirtualTreeView が独自の並べ替え方法を提供していることに気付きましたが、データ自体を並べ替えて GUI を更新するよりも動作が遅いようです。
GUI要素が表示するデータではなく、GUI要素を操作することは「良い習慣」ですか?それはなぜですか?
並べ替えに関する関連する質問は、この質問への回答に関連している可能性があります。VirtualTreeView が独自の並べ替え方法を提供していることに気付きましたが、データ自体を並べ替えて GUI を更新するよりも動作が遅いようです。
GUI要素が表示するデータではなく、GUI要素を操作することは「良い習慣」ですか?それはなぜですか?
通常、基になるデータとそのデータの視覚的表現との間の分離を維持する必要があります。そのことを念頭に置いて、通常は、データ レベルでソートするよりも、GUI レベルでソートを実装することを好みます。
たとえば、これにより、同じデータの複数のビューを異なる方法で並べ替えて表示できます。これは、モデルとビューを明確に分離することで得られるメリットです。
あなたの場合、2 つのオプションの実装はパフォーマンスの違いを示しています。そこから得られるのは、GUI レベルで実装すると、並べ替えを最適化できるということです。それが私が問題にアプローチする方法です。
私はデータを並べ替えません。インデックスだけです。リストでデータを収集すると、これらのリストはグループリストにグループ化されます。データを並べ替える代わりに、データをそのままにして、データへの参照を含む単純なリスト (またはリスト) を生成し、それを並べ替えます。そのリストを使用して、仮想リストビューを作成します。
それは、デビッドが言及している中間層のようなものです。複数のインデックスを保持することで、基になるデータを並べ替えることなく、さまざまな基準で並べ替えることができます。