Code Monkey home page Code Monkey logo

Comments (10)

gissuebot avatar gissuebot commented on May 16, 2024

Original comment posted by kevinb9n on 2009-03-17 at 05:09 PM


This idea needs a lot more thought.

Case 1: you can provide a comparator. In this case, you should provide it -- and just
create an ImmutableSortedSet. Creating that will cause a sort() to happen which will
be a no-op, and that's not great but not terrible. It's possible we could provide
another way to create an ISS where you declare your data is already increasing, thus
the factory only has to check that each element is higher than the one before it, and
doesn't have to call sort(). Meh.

Case 2: you can't provide a comparator. Some complicated database sort was done, for
instance. So your comparator becomes an Ordering.givenOrder() over the elements you
have. ImmutableSortedSet.inGivenOrder().addAll(list).build(). I kind of like this,
but I haven't heard a loud demand for it. (then again, many people are not loudly
demanding it but are still returning List from APIs that really should be Sets.)

from guava.

gissuebot avatar gissuebot commented on May 16, 2024

Original comment posted by jared.l.levy on 2009-08-13 at 02:06 PM


There's a problem with Case 2. Without a comparator, you can't implement the
comparator(), headSet(), tailSet(), and subSet() methods.

from guava.

gissuebot avatar gissuebot commented on May 16, 2024

Original comment posted by jim.andreou on 2009-08-13 at 02:20 PM


Could you elaborate on that a bit? E.g. why Ordering.givenOrder()/.explicit() wouldn't
do?

from guava.

gissuebot avatar gissuebot commented on May 16, 2024

Original comment posted by kevinb9n on 2009-08-13 at 02:43 PM


Yeah, those methods would only be able to accept values that are elements in the set,
so they'd be a bit crippled, but I'm not sure it's a deal-breaker.

This whole idea still lacks real motivation from users.

from guava.

gissuebot avatar gissuebot commented on May 16, 2024

Original comment posted by jim.andreou on 2009-08-13 at 03:05 PM


Hmm, alright. Though it wouldn't be any more "crippled" than Ordering.explicit()
itself. And you already decided that it doesn't pay off enough to allow defining what
happens with elements not contained in the list (with something similar to
nullsFirst()/nullsLast()), with which I agree, so I don't see this as a big issue - but
the real deal-breaker would be indeed lack of enough demand :)

from guava.

gissuebot avatar gissuebot commented on May 16, 2024

Original comment posted by leonidos on 2009-09-03 at 07:21 PM


ImmutableSortedSet should guarantee that its items are ordered using the comparator()
order, so it's a good idea to accept the client assumption (that items are already
ordered). But, I think, an acceptable case when the order is checked at the
construction phase - so ImmutableSortedSet.copyOfSorted(List<E> list) can check the
given list to be correct, and accept it if correct or throw an exception if not.

from guava.

gissuebot avatar gissuebot commented on May 16, 2024

Original comment posted by leonidos on 2009-09-10 at 01:36 PM


[erratum]
In the previous message - I meant "it's not a good idea accept the client assumption".

from guava.

gissuebot avatar gissuebot commented on May 16, 2024

Original comment posted by kevinb9n on 2009-09-17 at 06:02 PM


(No comment entered for this change.)


Labels: Milestone-Post1.0

from guava.

gissuebot avatar gissuebot commented on May 16, 2024

Original comment posted by jared.l.levy on 2010-02-16 at 07:11 PM


I just added ImmutableSortedSet.withExplicitOrder() methods to Google's internal code
base. It will probably be in a future Guava release.


Status: Fixed
Owner: jared.l.levy

from guava.

lptr avatar lptr commented on May 16, 2024

The issue says it's fixed, but it doesn't appear to be a possibility in recent versions of Guava. It would be a really useful functionality. Is there a reason not to have this?

from guava.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.