テーブルのヘッダをクリックしてセルをソートする場合、どのようなルールでソートされていますか。またルールを変更するにはどうすればよいですか

テーブルのヘッダをクリックしてセルをソートする場合、どのようなルールでソートされていますか。またルールを変更するにはどうすればよいですか

<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" です。