Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #16993
| From | "Eric Sosman" <eric.sosman@1:261/38.remove-s5y-this> |
|---|---|
| Subject | Re: verbose sort |
| Message-ID | <501AC32E.55955.calajapr@time.synchro.net> (permalink) |
| Newsgroups | comp.lang.java.programmer |
| References | <501AC32E.55954.calajapr@time.synchro.net> |
| Date | 2012-08-02 19:12 +0000 |
| Organization | tds.net |
To: bob smith
From: Eric Sosman <esosman@ieee-dot-org.invalid>
On 8/2/2012 11:37 AM, bob smith wrote:
> I have some code that sorts a list like so:
>
> Vector<String> my_list = new Vector<String>();
>
>
> Comparator<String> c = new Comparator<String>() {
> @Override
> public int compare(String object1, String object2) {
> if (object1 == null)
> return -1;
> if (object2 == null)
> return 1;
> object1 = object1.toLowerCase();
> object2 = object2.toLowerCase();
> return object1.compareTo(object2);
> };
> };
>
> Collections.sort(my_list, c);
>
>
> This seems like a lot of code for such a common operation. Is there a more
succinct way of doing this?
Consider using compareToIgnoreCase(). Also, think about what
happens when two null's are compared: You should return zero rather than
declaring one of them "less than" the other, because otherwise your comparator
is inconsistent (you can have A<B, B<C, but C<A).
public int compare(String s1, String s2) {
if (s1 == null)
return s2 == null ? 0 : -1;
return s2 == null ? +1 : s1.compareToIgnoreCase(s2);
}
--
Eric Sosman
esosman@ieee-dot-org.invalid
--- BBBS/Li6 v4.10 Dada-1
* Origin: Prism bbs (1:261/38)
--- Synchronet 3.16a-Win32 NewsLink 1.98
Time Warp of the Future BBS - telnet://time.synchro.net:24
Back to comp.lang.java.programmer | Previous | Next — Next in thread | Find similar | Unroll thread
Re: verbose sort "Eric Sosman" <eric.sosman@1:261/38.remove-s5y-this> - 2012-08-02 19:12 +0000 Re: verbose sort v_borchert@despammed.com (Volker Borchert) - 2012-08-02 21:38 +0000
csiph-web