File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Collection(Set),  Using a HashSet Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Collection(Set),  Using a HashSet" Watch "Collection(Set),  Using a HashSet" New topic
Author

Collection(Set), Using a HashSet

Arjun Reddy
Ranch Hand

Joined: Nov 10, 2007
Posts: 627
Hi Guys,

In the following code, How come each time I print the set, am getting a sorted result?



Thanks.


Be Humble... Be Nice.
Henry Wong
author
Sheriff

Joined: Sep 28, 2004
Posts: 18546
    
  40

In the following code, How come each time I print the set, am getting a sorted result?


Really? When I run this code, my ordering is not sorted.... I get A, C, B.

And BTW, even if it was A, B, C, can it be attributed to dumb luck? Three values is certainly not enough to prove that the results is always sorted.

Henry
[ July 25, 2008: Message edited by: Henry Wong ]

Books: Java Threads, 3rd Edition, Jini in a Nutshell, and Java Gems (contributor)
Arjun Reddy
Ranch Hand

Joined: Nov 10, 2007
Posts: 627
Um.. yeah but how come your getting A,C,B. Shouldn't you be getting C,A,B, the order which they were inserted?

Thanks.
burak cetin
Greenhorn

Joined: Jul 09, 2008
Posts: 3
Hashset is neither ordered nor sorted. so when you access the variables the outcome is unpredictable. there was a good explanation of the difference between ordered and sorted in kate&bert.

BC
[ July 25, 2008: Message edited by: burak cetin ]
Arjun Reddy
Ranch Hand

Joined: Nov 10, 2007
Posts: 627
Um.. sorted means 1,2,3,4 etc.. or a,b,c,d etc.. whats ordered?

Thanks.
Chandra Bhatt
Ranch Hand

Joined: Feb 28, 2007
Posts: 1707
Originally posted by Arjun Reddy:
Um.. sorted means 1,2,3,4 etc.. or a,b,c,d etc.. whats ordered?

Thanks.


Ordered means in what order like (First In First Out) or (Last In First Out) or any other way of inserting and retrieving from the Collection. But Set is not ordered, means it does not have any order of the above avtivities. If you get so called sorted output (a,b,c) its just a chance that for you it was like that (to confuse you more)


cmbhatt
Deepak Bajoria
Ranch Hand

Joined: Mar 07, 2008
Posts: 35
I think it all depends on the hash function used by the JVM. Like for e.g if a hashCode() simply returns the ascii value of the letter, the output would be sorted


SCJP 5 - 93%
Henry Wong
author
Sheriff

Joined: Sep 28, 2004
Posts: 18546
    
  40

Originally posted by Deepak Bajoria:
I think it all depends on the hash function used by the JVM. Like for e.g if a hashCode() simply returns the ascii value of the letter, the output would be sorted


Not really. First, it depends on how the buckets are implemented. The Set may not map linearly with hashcode. Second, there may not be a one to one mapping between buckets and hashcodes. Two different letter may end up in the same bucket, then it will depend on how each bucket is implemented.

Henry
Henry Wong
author
Sheriff

Joined: Sep 28, 2004
Posts: 18546
    
  40

One other point, if something is not sorted or ordered, it doesn't mean that the ordering random. Don't expect iterations through the Set to yield different results -- it may, but it may not. The point is, any ordering is purely coincidental, and the HashSet collection has not been implemented with any ordering.

Henry
Arjun Reddy
Ranch Hand

Joined: Nov 10, 2007
Posts: 627
Thank you guys.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Collection(Set), Using a HashSet
 
Similar Threads
arraylist in java
collection??
hashset
HashSet question
Collection addAll method Strange Behavior