Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / August 2006

Tip: Looking for answers? Try searching our database.

sorting in order of values

Thread view: 
Shikha - 16 Aug 2006 13:37 GMT
I need to make a collection wherein i can have a key value pair and the
sorting happens in alphabetical order of values. also i want that after
the initial insert of values if i add or remove any value then the
collection should be sorted again in alphabetical order.
- i cant use arraylist because it doesnt have a key value pair.
- i cant use a hashmap because when i iterate the values i get them in
a random order whereas i want them in alphabetical order.
- TreeMap does the sorting in order of keys.
- LinkedHashMap does the sorting in order of insertion. so for the
initial insert it will be fine
but when i add and remove values it will not give me the alphabetical
order.

would appreciate some help on this

thanks
shikha
Eric Sosman - 16 Aug 2006 13:55 GMT
> I need to make a collection wherein i can have a key value pair and the
> sorting happens in alphabetical order of values. also i want that after
[quoted text clipped - 8 lines]
> but when i add and remove values it will not give me the alphabetical
> order.

    Try just putting the (key,value) pairs in an ordinary HashMap.
When you want to visit all the values (or all the pairs) in order
by value, use .values() to extract the values (or .entrySet() to
extract the pairs), sort them, and traverse the sorted data instead
of the original Map.

    That might not be suitable for all situations, but works for
many.  If it's not the right answer for your predicament, you'll
need to describe your purposes more fully.

Signature

Eric Sosman
esosman@acm-dot-org.invalid

Shikha - 16 Aug 2006 14:17 GMT
>      Try just putting the (key,value) pairs in an ordinary HashMap.
> When you want to visit all the values (or all the pairs) in order
> by value, use .values() to extract the values (or .entrySet() to
> extract the pairs), sort them, and traverse the sorted data instead
> of the original Map.

you mean to say that i should get the values and put them in an
arraylist and then access the values from the arraylist instead of
getting them from the map ?

>      That might not be suitable for all situations, but works for
> many.  If it's not the right answer for your predicament, you'll
> need to describe your purposes more fully.

what you suggested should i work. it would have been good if i were
able to directly put the values in some collection which does a sorting
of values.
i want to take a list of vendors from the database alongwith their ids
and store them in a collection. then i want to keep adding and removing
values from this collection based on some user inputs.

Thanks
shikha
Shikha - 16 Aug 2006 14:25 GMT
> >      Try just putting the (key,value) pairs in an ordinary HashMap.
> > When you want to visit all the values (or all the pairs) in order
[quoted text clipped - 5 lines]
> arraylist and then access the values from the arraylist instead of
> getting them from the map ?

Eric, I was about to try this out but i realised that this wouldnt
work. Because i need to populate the values from a Map. the reason
being that when the user selects a particular value i need to pick the
corresponding key for the value. so if i populate the values from
arraylist i wouldnt be able to get the corresponding id.

any other suggestions ?

thanks
shikha
Eric Sosman - 16 Aug 2006 16:06 GMT
Shikha wrote On 08/16/06 09:25,:
>>>     Try just putting the (key,value) pairs in an ordinary HashMap.
>>>When you want to visit all the values (or all the pairs) in order
[quoted text clipped - 11 lines]
> corresponding key for the value. so if i populate the values from
> arraylist i wouldnt be able to get the corresponding id.

   If you need the (key,value) pairs sorted by value, not
just the values themselves, use theMap.entrySet() to get
them: it gives you a Collection of Map.Entry objects, each
representing one (key,value) pair.  Sort that Collection of
pairs using a Comparator that looks at the values.

Signature

Eric.Sosman@sun.com

Stefan Ram - 16 Aug 2006 16:16 GMT
>If you need the (key,value) pairs sorted by value, not
>just the values themselves, use theMap.entrySet() to get
>them: it gives you a Collection of Map.Entry objects, each
>representing one (key,value) pair.  Sort that Collection of
>pairs using a Comparator that looks at the values.

 When a value is inserted, it could be inserted into both
 collections, keeping their respective invariants: So the
 sorted collection will stay sorted (insertation sort).

 Just inserting a single value into the correct position
 should be faster than to sort anew. Shifting all following
 values could be faster if a linked list is used.

 However: All this is very low-level. So it might be best to
 encapsulate the whole decision and implement it in the most
 convenient way at first. Then, when the first copies of the
 program are sold and it turns out that this implementation
 really is too slow, it still can be optimized for version 1.1.


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.