Gần đây tôi đã viết một Trình so sánh để sắp xếp nhiều trường trong một bản ghi Chuỗi được phân tách. Nó cho phép bạn xác định dấu phân cách, cấu trúc bản ghi và các quy tắc sắp xếp (một số trong đó là loại cụ thể).
Thông tin bắt buộc được gieo vào chính Trình so sánh, theo cách lập trình hoặc thông qua tệp XML.
XML được xác thực bởi tệp XSD được nhúng trong gói. Ví dụ, dưới đây là một phân định tab bố trí kỷ lục với bốn lĩnh vực (hai trong số đó là sắp xếp được):
<?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>
Sau đó, bạn dùng chương trình này trong java như vậy:
Comparator<String> comparator = new RowComparator(
new XMLStructureReader(new File("layout.xml")));
Thư viện có thể được tìm thấy ở đây :
http://sourceforge.net/projects/multicolumnrowcomparator/
tên của lớp học của bạn đã nhắc nhở tôi về org.apache.commons.collections.comparators.ComparatorChain :) –
Vâng, đó là wh tôi tìm thấy chỉ vài phút trước. Có lẽ đã phải google nó đầu tiên, trước khi thực hiện nó :) – Simon