私は最近、区切り文字列レコード内に複数のフィールドを並べ替えるコンパレータを書きました。区切り文字、レコード構造、ソートルール(一部は型固有のもの)を定義することができます。
必要な情報は、プログラムまたはXMLファイルを使用してコンパレータ自体にシードされます。
XMLは、パッケージに埋め込まれたXSDファイルによって検証されます。例えば、以下の4つの分野(そのうちの2つはソート可能です)と、タブ区切りのレコードレイアウトは次のとおりです。
<?xml version="1.0" encoding="ISO-8859-1"?>
<row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<delimiter>	</delimiter>
<column xsi:type="Decimal">
<name>Column One</name>
</column>
<column xsi:type="Integer">
<name>Column Two</name>
</column>
<column xsi:type="String">
<name>Column Three</name>
<sortOrder>2</sortOrder>
<trim>true</trim>
<caseSensitive>false</caseSensitive>
<stripAccents>true</stripAccents>
</column>
<column xsi:type="DateTime">
<name>Column Four</name>
<sortOrder>1</sortOrder>
<ascending>true</ascending>
<nullLowSortOrder>true</nullLowSortOrder>
<trim>true</trim>
<pattern>yyyy-MM-dd</pattern>
</column>
</row>
あなたはそのようにのようなJavaでこれを使用します。
Comparator<String> comparator = new RowComparator(
new XMLStructureReader(new File("layout.xml")));
ライブラリはここで見つけることができます:
http://sourceforge.net/projects/multicolumnrowcomparator/
あなたのクラスの名前がorg.apache.commons.collections.comparators.ComparatorChainについて私に思い出させてきた:) –
はい、それはWHです私はちょうど数分前に見つけました。多分それを実装する前に、まずそれをGoogleに持っていなければなりません:) – Simon