Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Strange exception

0 views
Skip to first unread message

nooneinpart...@yahoo.com

unread,
Mar 15, 2008, 7:46:46 PM3/15/08
to
I'm attempting to add a byte[] to a TreeSet. The first time that I
add a byte[] to it, it works just fine. The second time, it causes an
exception, although it is really not clear what causes the exception
to occur. This is what is happening when the exception occurs:

//convert a string containing an IP address to a byte[]
byte[] IPAddressBytes = InputIPAddress.getBytes();

//Add the byte[] to the TreeSet
MyTreeSet.add(IPAddressBytes);

This is being run inside a loop. The first time through, it runs just
fine. The second time through, I get the following exception:

Exception in thread "main" java.lang.ClassCastException: [B
at java.util.TreeMap.compare(TreeMap.java:1093)
at java.util.TreeMap.put(TreeMap.java:465)
at java.util.TreeSet.add(TreeSet.java:210)

If I try putting this in a try block, I get:
OutgoingConnectionHandler: Add:java.lang.ClassCastException: [B

I have no clue what [B is supposed to mean. Any ideas? What am I
doing wrong here?

Thanks!

Knute Johnson

unread,
Mar 15, 2008, 8:56:22 PM3/15/08
to

How do you compare two arrays of byte? If you don't have a Comparator
then I think that is where your problem lies.

--

Knute Johnson
email s/nospam/linux/

--
Posted via NewsDemon.com - Premium Uncensored Newsgroup Service
------->>>>>>http://www.NewsDemon.com<<<<<<------
Unlimited Access, Anonymous Accounts, Uncensored Broadband Access

Mike Schilling

unread,
Mar 16, 2008, 2:15:50 AM3/16/08
to

"[B" is the internal name for the class "Array of bytes". What's
going on is that TreeSet keeps its entries sorted, meaning that it
needs a way to compare two elements to each other. When you add the
first element, there's nothing to comapre it to, so you're OK. When
you add the second element, the TreeSet code casts both the
Comparable, so it can compare them, but "array of byte" doesn't
implement Comparable, hence the exception. (I'm assuming you didn't
create the TreeSet to use a Comaprator rather than the "natrual
ordering" imposed by Comparable; if you had, we'd see its compare
method on the stack trace.)

Why are you using a TreeSet? If it's because you do want to keep the
addreses sorted in some order, then you need to implement a Comparator
that implements that ordering and specify it when constructing the
TreeSet object. If not, you're using the wrong Set implementation.


Roedy Green

unread,
Mar 17, 2008, 1:25:22 AM3/17/08
to
On Sat, 15 Mar 2008 16:46:46 -0700 (PDT),
"nooneinpart...@yahoo.com"
<nooneinpart...@yahoo.com> wrote, quoted or indirectly quoted
someone who said :

>ClassCastException

see
http://mindprod.com/jgloss/runerrormessages.html#CLASSCASTEXCEPTION

Chances are you forgot to implement Comparable or declare than you
were implementing Comparable on your custom class.
--

Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com

Mike Schilling

unread,
Mar 17, 2008, 1:30:56 AM3/17/08
to
Roedy Green wrote:
> On Sat, 15 Mar 2008 16:46:46 -0700 (PDT),
> "nooneinpart...@yahoo.com"
> <nooneinpart...@yahoo.com> wrote, quoted or indirectly
> quoted
> someone who said :
>
>> ClassCastException
>
> see
> http://mindprod.com/jgloss/runerrormessages.html#CLASSCASTEXCEPTION
>
> Chances are you forgot to implement Comparable or declare than you
> were implementing Comparable on your custom class.

The "custom class" in this case was "array of bytes"; not much chance
of implementing Comparable on that.


0 new messages