You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by "Michael A. Smith" <mi...@iammichael.org> on 2002/03/01 04:20:28 UTC

Re: [COLLECTIONS] Comparator observations

On Thu, 28 Feb 2002, Morgan Delagrange wrote:
> > I'm just curious, but why do you feel they are too specific?  If someone
> > whants to create a TreeSet (or FastTreeSet, or pretty much any ordered
> > set), which contains URLs, a URL comparator might be useful.
> 
> Why would you want an ordered list of URLs?  For display purposes?  Or to
> guarantee that you are not referring to the same file?  If that's the case,
> that's already addressed by URLStreamHandler.equals() which returns "true if
> the two urls are considered equal, ie. they refer to the same fragment in
> the same file."  If this Comparator is trying to overcome deficiencies in
> URLStreamHandler, that should be documented in the class.  Even if it were
> the case, I don't believe a Comparator is the right place to address it.
> 
> Usually, if it makes sense to ascribe order to an Object, that Object
> implements Comparable.  In this particular case, the UrlComparator sorts by
> host, then path, then protocol, then port.  But why that and not protocol,
> host, path, port?  Or why not protocol, host, port, path?  URLs don't really
> have an implicit order, so the UrlComparator is guaranteed to be somewhat
> arbitrary.

Point well taken.  

> My objection is mainly their arbitrary ordering.  They try to sort Objects
> that don't have undeniable order.  That's why I'd rather see us focus on
> Comparators that reverse other comparators (ReverseComparator), or
> comparators that can be used to implement SortedSets or SortedMaps
> (ComparableComparator).  Other possibilities might be classes that let you
> chain Comparators together, or Comparators that truly address oversights in
> the JDK.  Comparators like the Soundex Comparator also make sense, because
> Soundex has an implicit ordering (but Soundex is also very specific, and
> it's more appropriate where it is in Codec.)  I'd rather not see us try to
> ascribe an arbitrary ordering to Objets like URLs and package names.

Again, point taken.  Soundex should definately go with the soundex stuff.  
It is specific to that codec.

> But surely there's quite a distinction in scope between these classes that
> deal with iteration in general and a class that only sorts URLs?

my iteration example was referring to simplicity of implementation, not 
applicability to collections.  :)


regards,
michael


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>