テーブルのヘッダをクリックしてセルをソートする場合、どのようなルールでソートされていますか。またルールを変更するにはどうすればよいですか
<column> の dataType 属性に設定されたデータ型に応じて、文字列で表される列内のセルの値をそれぞれの型に
変換した上で比較、ソートを行います。dataType 属性が未設定の場合、デフォルトでは "string" が設定されます。
この <column> の dataType 属性値を設定することで、ソートのルールを変更することができます。
属性値ごとのソートルールは以下の通りです。
■ number / double / float の場合
セルの値を java.lang.Dobule に変換し、Dobule#doubleValue() より取得した
double 値を比較、ソートします。
※セルの値が空文字("")や Dobule オブジェクトへ変換できない場合には
定数 Double.MIN_VALUE の値が比較対象として使用されます。
■ long / integer の場合
セルの値を java.lang.Long に変換し、Long#longValue() より取得した
long 値を比較、ソートします。
※セルの値が空文字("")や Long オブジェクトへ変換できない場合には
定数 Long.MIN_VALUE の値が比較対象として使用されます。
■ bigDecimal の場合
セルの値を java.math.BigDecimal に変換し、
BigDecimal#compareTo(BigDecimal) により比較してソートします。
※セルの値が空文字("")や BigDecimal オブジェクトへ変換できない場合には
Double.MIN_VALUE にて生成した BigDecimal オブジェクトが比較対象として使用されます。
■ bigInteger の場合
セルの値を java.math.BigInteger に変換し、
BigInteger#compareTo(BigInteger) により比較してソートします。
※セルの値が空文字("")や BigIntegerオブジェクトへ変換できない場合には
Long.MIN_VALUE にて生成した BigInteger オブジェクトが比較対象として使用されます。
■ string の場合
セルの値を java.text.CollationKey に変換し、
CollationKey#compareTo(CollationKey) により比較してソートします。
※CollationKey を取得する際に Collator#getInstance() にて
現在のデフォルトロケールに対する Collator を取得しているため、
文字の比較にはデフォルトロケールに設定されている言語コードが用いられます。
なお、列内で同値が存在する場合はテーブルの sortType 属性の設定値に応じてソート結果が異なることに
ご留意ください。ソートのアルゴリズムは sortType 属性が "stable" の場合インサーションソート、
"unstable" の場合はクイックソートが用いられます。後者の場合、安定ソートではないため同等なデータの
ソート前の順序がソート後に保存されません。
sortType 属性のデフォルト設定値は "unstable" です。