import java.util.Arrays ;
import java.util.Collections ;
import java.util.Comparator ;
import java.util.List ;
class Item {
public Item( ) {
super ( ) ;
}
public Item
( final String name
) { super ( ) ;
this .name = name;
}
return name;
}
public void setName
( String name
) { this .name = name;
}
@Override
return String .
format ( "Item[name=%s]" , getName
( ) ) ; }
}
class ItemTest {
public static void main
( final String [ ] args
) { try {
testSortItemArrByNameExcludingThe( ) ;
testSortItemListByNameExcludingThe( ) ;
e.printStackTrace ( ) ;
}
}
public static void testSortItemArrByNameExcludingThe
( ) throws Exception { final Item[ ] itemArr = new Item[ ] { new Item( "The Abacus" ) ,
new Item( "The Killing of Molly Brown" ) ,
new Item( "The What and The Who" ) ,
new Item( "The Fighting Temptations" ) ,
new Item( "Doctor Seusses Cat in the Hat" ) } ;
Arrays .
sort ( itemArr,
new Comparator
< Item
> ( ) { public int compare( Item a, Item b) {
String newA
= a.
getName ( ) .
replaceAll ( "(?i)^the\\ s+" ,
"" ) ; String newB
= b.
getName ( ) .
replaceAll ( "(?i)^the\\ s+" ,
"" ) ; return newA.compareToIgnoreCase ( newB) ;
}
} ) ;
System .
out .
println ( "Array Sort:" + Arrays .
toString ( itemArr
) ) ; }
public static void testSortItemListByNameExcludingThe
( ) throws Exception { final Item[ ] itemArr = new Item[ ] { new Item( "The Abacus" ) ,
new Item( "The Killing of Molly Brown" ) ,
new Item( "The What and The Who" ) ,
new Item( "The Fighting Temptations" ) ,
new Item( "Doctor Seusses Cat in the Hat" ) } ;
final List
< Item
> itemList
= Arrays .
asList ( itemArr
) ; public int compare( Item a, Item b) {
String newA
= a.
getName ( ) .
replaceAll ( "(?i)^the\\ s+" ,
"" ) ; String newB
= b.
getName ( ) .
replaceAll ( "(?i)^the\\ s+" ,
"" ) ; return newA.compareToIgnoreCase ( newB) ;
}
} ) ;
System .
out .
println ( "Lists Sort:" + itemList
) ; }
}
aW1wb3J0IGphdmEudXRpbC5BcnJheXM7CmltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CmltcG9ydCBqYXZhLnV0aWwuQ29tcGFyYXRvcjsKaW1wb3J0IGphdmEudXRpbC5MaXN0OwoKY2xhc3MgSXRlbSB7CiAgICBwcml2YXRlIFN0cmluZyBuYW1lOwoKICAgIHB1YmxpYyBJdGVtKCkgewogICAgICAgIHN1cGVyKCk7CiAgICB9CgogICAgcHVibGljIEl0ZW0oZmluYWwgU3RyaW5nIG5hbWUpIHsKICAgICAgICBzdXBlcigpOwogICAgICAgIHRoaXMubmFtZSA9IG5hbWU7CiAgICB9CgogICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgewogICAgICAgIHJldHVybiBuYW1lOwogICAgfQoKICAgIHB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpIHsKICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOwogICAgfQoKICAgIEBPdmVycmlkZQogICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKICAgICAgICByZXR1cm4gU3RyaW5nLmZvcm1hdCgiSXRlbVtuYW1lPSVzXSIsIGdldE5hbWUoKSk7CiAgICB9Cn0KCmNsYXNzIEl0ZW1UZXN0IHsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKGZpbmFsIFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICB0ZXN0U29ydEl0ZW1BcnJCeU5hbWVFeGNsdWRpbmdUaGUoKTsKICAgICAgICAgICAgdGVzdFNvcnRJdGVtTGlzdEJ5TmFtZUV4Y2x1ZGluZ1RoZSgpOwogICAgICAgIH0gY2F0Y2ggKGZpbmFsIEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0U29ydEl0ZW1BcnJCeU5hbWVFeGNsdWRpbmdUaGUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICBmaW5hbCBJdGVtW10gaXRlbUFyciA9IG5ldyBJdGVtW10geyBuZXcgSXRlbSgiVGhlIEFiYWN1cyIpLAogICAgICAgICAgICAgICAgbmV3IEl0ZW0oIlRoZSBLaWxsaW5nIG9mIE1vbGx5IEJyb3duIiksCiAgICAgICAgICAgICAgICBuZXcgSXRlbSgiVGhlIFdoYXQgYW5kIFRoZSBXaG8iKSwKICAgICAgICAgICAgICAgIG5ldyBJdGVtKCJUaGUgRmlnaHRpbmcgVGVtcHRhdGlvbnMiKSwKICAgICAgICAgICAgICAgIG5ldyBJdGVtKCJEb2N0b3IgU2V1c3NlcyBDYXQgaW4gdGhlIEhhdCIpIH07CgogICAgICAgIEFycmF5cy5zb3J0KGl0ZW1BcnIsIG5ldyBDb21wYXJhdG9yPEl0ZW0+KCkgewogICAgICAgICAgICBwdWJsaWMgaW50IGNvbXBhcmUoSXRlbSBhLCBJdGVtIGIpIHsKICAgICAgICAgICAgICAgIFN0cmluZyBuZXdBID0gYS5nZXROYW1lKCkucmVwbGFjZUFsbCgiKD9pKV50aGVcXHMrIiwgIiIpOwogICAgICAgICAgICAgICAgU3RyaW5nIG5ld0IgPSBiLmdldE5hbWUoKS5yZXBsYWNlQWxsKCIoP2kpXnRoZVxccysiLCAiIik7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3QS5jb21wYXJlVG9JZ25vcmVDYXNlKG5ld0IpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQXJyYXkgU29ydDoiICsgQXJyYXlzLnRvU3RyaW5nKGl0ZW1BcnIpKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgdGVzdFNvcnRJdGVtTGlzdEJ5TmFtZUV4Y2x1ZGluZ1RoZSgpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgIGZpbmFsIEl0ZW1bXSBpdGVtQXJyID0gbmV3IEl0ZW1bXSB7IG5ldyBJdGVtKCJUaGUgQWJhY3VzIiksCiAgICAgICAgICAgICAgICBuZXcgSXRlbSgiVGhlIEtpbGxpbmcgb2YgTW9sbHkgQnJvd24iKSwKICAgICAgICAgICAgICAgIG5ldyBJdGVtKCJUaGUgV2hhdCBhbmQgVGhlIFdobyIpLAogICAgICAgICAgICAgICAgbmV3IEl0ZW0oIlRoZSBGaWdodGluZyBUZW1wdGF0aW9ucyIpLAogICAgICAgICAgICAgICAgbmV3IEl0ZW0oIkRvY3RvciBTZXVzc2VzIENhdCBpbiB0aGUgSGF0IikgfTsKCiAgICAgICAgZmluYWwgTGlzdDxJdGVtPiBpdGVtTGlzdCA9IEFycmF5cy5hc0xpc3QoaXRlbUFycik7CiAgICAgICAgQ29sbGVjdGlvbnMuc29ydChpdGVtTGlzdCwgbmV3IENvbXBhcmF0b3I8SXRlbT4oKSB7CiAgICAgICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShJdGVtIGEsIEl0ZW0gYikgewogICAgICAgICAgICAgICAgU3RyaW5nIG5ld0EgPSBhLmdldE5hbWUoKS5yZXBsYWNlQWxsKCIoP2kpXnRoZVxccysiLCAiIik7CiAgICAgICAgICAgICAgICBTdHJpbmcgbmV3QiA9IGIuZ2V0TmFtZSgpLnJlcGxhY2VBbGwoIig/aSledGhlXFxzKyIsICIiKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXdBLmNvbXBhcmVUb0lnbm9yZUNhc2UobmV3Qik7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJMaXN0cyBTb3J0OiIgKyBpdGVtTGlzdCk7CiAgICB9Cn0=
stdout
Array Sort:[Item[name=The Abacus], Item[name=Doctor Seusses Cat in the Hat], Item[name=The Fighting Temptations], Item[name=The Killing of Molly Brown], Item[name=The What and The Who]]
Lists Sort:[Item[name=The Abacus], Item[name=Doctor Seusses Cat in the Hat], Item[name=The Fighting Temptations], Item[name=The Killing of Molly Brown], Item[name=The What and The Who]]