Thanks Remi for the comments!
As you and Roger suggested I only left a CharSequence variant of the
comparator.
I also removed the custom Comparator<Character> altogether for now, for
the sake of simplicity.
I guess for the purpose of a sample Character.compare(ch1, ch2) should
be good enough.
Here's the updated webrev:
http://cr.openjdk.java.net/~igerasim/XXXXXXX-AlphaNumeric/1/webrev/
I'm not certain, why the comparator should be serializable.
Could you please elaborate on this?
Sincerely yours,
Ivan
On 16.12.2014 2:39, Remi Forax wrote:
Hi Ivan, hi Roger,
Roger, the API already exists it's the interface Comparator.
I agree with Roger that a comparator that use a CharSequence is better
that the one that use a char array.
The thing that worry me is the Comparator<Character> taken as
parameter, it means that
each time the method compare() is called on this comparator, the two
arguments are boxed.
Minor comment, to be included, I think that these comparators should
be serializable
and in my opinion the best way to do that is to use a lambda instead
of a class.
Rémi
On 12/15/2014 11:31 PM, roger riggs wrote:
Hi Ivan,
It does seem like a useful function, though I would have started with
the API,
not the implementation.
Can it apply to CharSequence not only String and maybe skip the
separate char[] version, a char[] array can be wrapped to become a
CharSequence via CharBuffer.
Or a via a new static method to define a CharSequence from a char array.
$.02, Roger
On 12/15/2014 5:53 AM, Ivan Gerasimov wrote:
Hello everyone!
In certain situations the preferred way of sorting strings is a
combination of char-comparing sorting with numeric sorting, where
applicable.
List of strings sorted this way often look more natural to the human
eyes:
{ "alpha",
"java1",
"java2",
"java10",
"zero" }
Here's presented a sample implementation of the comparator, which
supports this way of sorting.
I placed it under src/sample directory.
http://cr.openjdk.java.net/~igerasim/XXXXXXX-AlphaNumeric/0/webrev/
MSDN provides the function StrCmpLogicalW(), which can be used for
similar sort order.
http://msdn.microsoft.com/en-us/library/windows/desktop/bb759947%28v=vs.85%29.aspx
The differences are:
- case-sensitivity (StrCmpLogicalW is case-insensitive);
- treating leading zeroes;
- more accurate handling of strings with big numbers, which cannot
be converted to int/long.
I guess this comparator may become particularly useful when we'll
have 'java10' and update releases/build numbers > 99 in the lists :)
I want to ask the community about how useful this comparator may be
to you?
Sincerely yours,
Ivan