Java implementation of Alpha-numeric comparator

Ivan Gerasimov ivan.gerasimov at oracle.com
Tue Dec 16 08:57:42 UTC 2014


Got it, thanks!

Please find the updated webrev at the same location:
http://cr.openjdk.java.net/~igerasim/XXXXXXX-AlphaNumeric/1/webrev/

Sincerely yours,
Ivan

On 16.12.2014 11:23, Remi Forax wrote:
>
> On 12/16/2014 09:13 AM, Ivan Gerasimov wrote:
>> 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?
>
> Yes, all public comparators in the JDK are serializable because 
> otherwise people will not be able to serialize collections like 
> TreeSet or ConcurrentSkipListSet that implement Serializable and take 
> a comparator as an optional argument.
>
>
>>
>> Sincerely yours,
>> Ivan
>
> cheers,
> Rémi
>
>>
>> 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
>>>>>
>>>>
>>>
>>>
>>>
>>
>
>
>




More information about the core-libs-dev mailing list