Hello,

This assignment also includes casting.

 

Your iterator does not understand to which class belongs an object, it
just iterates though all objects in TreeSet.

You should add check such as: if an object is instance of my class - if
(o instanceof MyOwnClass), cast an object in TreeSet to MyOwnClass:

 

Moria.

 

________________________________

From: javaprogrammingwithpassion@googlegroups.com
[mailto:javaprogrammingwithpass...@googlegroups.com] On Behalf Of
yongchun gao
Sent: Sunday, October 04, 2009 10:59 AM
To: javaprogrammingwithpassion@googlegroups.com
Subject: [java programming] help on Lab 1008: 2.4

 

Hello, All,

I can not figure out how to slove the problem. Could you help me?

Here is the classes.

------------------------------------------------------------------------
------------------------------------
package mytreeset;

import java.util.TreeSet;
import java.util.Iterator;

public class Main {

    public static void main(String[] args) {

        TreeSet ts = new TreeSet();

        ts.add("Tree Set Item 1");
        ts.add("Tree Set Item 2");

        MyOwnClass O1 = new MyOwnClass();
        O1.setShape("Circle");
        ts.add(O1);

        MyOwnClass O2 = new MyOwnClass();
        O2.setShape("Triangle");
        ts.add(O2);

        ts.add(4);
        ts.add(7);
        ts.add(9);

        Iterator it = ts.iterator();
        while(it.hasNext())
        {
            System.out.println(it.next());
        }
    }

}
------------------------------------------------------------------------
------------------------------------

package mytreeset;

import java.util.Comparator;

public class MyOwnClass implements Comparator
{
    private String Shape;

    public String getShape() {
        return Shape;
    }

    public void setShape(String Shape) {
        this.Shape = Shape;
    }

    public MyOwnClass() {        
    }

    public boolean equals(Object obj)
    {
        MyOwnClass M1=(MyOwnClass) obj;
        if (M1.Shape.length()==this.Shape.length())
            return true;
        else
            return false;
    }

    public int compare(Object o1, Object o2) {
        MyOwnClass M1=(MyOwnClass) o1;
        MyOwnClass M2=(MyOwnClass) o2;
        if (M1.Shape.length()>M2.Shape.length())
            return 1;
        else if (M1.Shape.length()==M2.Shape.length())
            return 0;
        else
            return -1;
    }


}
------------------------------------------------------------------------
------------------------------------
When I run the main class,  I got

run:
Exception in thread "main" java.lang.ClassCastException:
mytreeset.MyOwnClass cannot be cast to java.lang.Comparable
        at java.util.TreeMap.put(TreeMap.java:542)
        at java.util.TreeSet.add(TreeSet.java:238)
        at mytreeset.Main.main(Main.java:18)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)


Thanks




--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to javaprogrammingwithpassion@googlegroups.com
To unsubscribe from this group, send email to 
javaprogrammingwithpassion+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/javaprogrammingwithpassion?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to