14. marts 2003 - 16:18
Der er
11 kommentarer og 1 løsning
compareTo metode
Hej. Jeg sidder med en kode hvor dette indgår: Object _object; public int compareTo(Object o) { return (_object sammenlignet med o) //pseduo kode } Hvordan får jeg formuleret det som der står i min pseduo kode ??
Annonceindlæg fra SoftwareOne
14. marts 2003 - 16:19
#1
klassen implementere selvfølgelig Comparable ...
14. marts 2003 - 16:26
#2
Du er nødt til at vide lidt om de objekter. Noget i retning af: public int compareTo(Object o) { return (((X)_object).getValue() - ((X)o).getValue()); } Hvor dine objekter er af typen X som har en metode getValue der returnerer et tal du kan sammenligne.
14. marts 2003 - 16:28
#3
Hvis getValue() returnerer et objekt kan du bruge: public int compareTo(Object o) { return ((X)_object).getValue().compareTo(((X)o).getValue()); }
14. marts 2003 - 16:32
#4
Objecterne vil være af typen Integer eller String ... og de har jo deres egne mtoder til at compare, så jeg vil egentlig bare have Integer/String klassen til at gøre det return _object.compareTo(o); men det virker ikke
14. marts 2003 - 16:34
#5
Så skal du nok over i: public int compareTo(Object o) { return ((Integer)_object).compareTo((Integer)o); }
14. marts 2003 - 16:36
#6
typecast burde ikke være nødvendigt da compareTo altid returnere int... men det virker ikke
14. marts 2003 - 16:37
#7
public class Compare { public static void main(String[] args) { Object i1 = new Integer(1); Object i2 = new Integer(2); System.out.println(((Integer)i1).compareTo((Integer)i1)); System.out.println(((Integer)i1).compareTo((Integer)i2)); System.out.println(((Integer)i2).compareTo((Integer)i1)); System.out.println(((Integer)i2).compareTo((Integer)i2)); } } virker !
14. marts 2003 - 16:39
#8
Jo - typecast er nødvendigt, da der ikke er nogen compareTo metode i Object !
14. marts 2003 - 16:41
#9
Hvis Object kan være enten Integer eller String skal du test hvad de er, altså: public int compareTo(Object o) { if(_object instanceof Integer) { return ((Integer)_object).compareTo(o); } if(_object instanceof String) { return ((String)_object).compareTo(o); } else { // ???? } }
14. marts 2003 - 16:47
#10
Jeg prøver at rode lidt videre med det... tak :-)
14. marts 2003 - 17:21
#11
Comparable _object; public int compareTo(Object o) { return _object.compareTo(((Edge)o).getObject()); } Kunne løse det :-)
14. marts 2003 - 17:22
#12
Mine objecter er af typen Edge, som du kan se
Kurser inden for grundlæggende programmering