Using the current HelpFormater and Options classes it is impossible to print command-line options in the same order as they were added.
In some applications this is critical, since option grouping is important for understanding how to use a program. Also, the programmer might have good reasons for adding options in a particular order. The default could remain printing sorted options, however.
Two small changes need to be made to allow this:
1. Change to use LinkedHashMap instead of HashMap in Options class:
private Map shortOpts = new LinkedHashMap(); // keeps original order by default
private Map optionGroups = new LinkedHashMap();
2. Change the "null" formatter option in HelpFormatter to actually skip sorting:
public void setOptionComparator(Comparator comparator)
this.optionComparator = comparator; // allow null values, default ordering
Fix #2 above isn't strictly necessary, but would avoid forcing users to create boiler-plate code for this.