Java Comparable

  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
import java.util.*;

public class zadanie6 {

    public static void main(String[] args) {

        TreeSet<Integer> i = new TreeSet<Integer>();
        TreeSet<Dog> d = new TreeSet<Dog>();
        
        d.add(new Dog(1));
        d.add(new Dog(2));
        d.add(new Dog(1));

        i.add(1);
        i.add(2);
        i.add(1);
        
        System.out.println(d.size()+" "+i.size());
    }

}

class Dog{
    int size;

    public Dog(int s) {
        size = s;
    }
    
}

dlaczego to zwraca podczas runtime Exception

Kopiuj
 Exception in thread "main" java.lang.ClassCastException: Testy.Dog cannot be cast to java.lang.Comparable
    at java.util.TreeMap.compare(Unknown Source)
    at java.util.TreeMap.put(Unknown Source)
    at java.util.TreeSet.add(Unknown Source)
    at Testy.zadanie6.main(zadanie6.java:13)
NoZi
  • Rejestracja: dni
  • Ostatnio: dni
1

Błąd występuje dlatego że Dog nie implementuje Comparable, z tego względu że TreeSet przechowuję elementy POSORTOWANE, a Java nie wie jak posortować Twoje Dogi ;]

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

@Alistar22 użyj HashSet albo pokaż javie jak porównywać psy ;]

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.