2017-04-25 4 views
-3

Derzeit lerne ich Java.keine geeignete Methode gefunden für Collections.sort (Liste)

Ich habe ein Problem mit java.utils.Collections, NetBeans geben mir diesen Fehler.

no suitable method found for sort(List<MovieSession>) 
    method Collections.<T#1>sort(List<T#1>) is not applicable 
     (inference variable T#1 has incompatible bounds 
     equality constraints: MovieSession 
     upper bounds: Comparable<? super T#1>) 
    method Collections.<T#2>sort(List<T#2>,Comparator<? super T#2>) is not applicable 
     (cannot infer type-variable(s) T#2 
     (actual and formal argument lists differ in length)) 
    where T#1,T#2 are type-variables: 
    T#1 extends Comparable<? super T#1> declared in method <T#1>sort(List<T#1>) 
    T#2 extends Object declared in method <T#2>sort(List<T#2>,Comparator<? super T#2> 

Ich habe folgende Klasse MovieSession

public class MovieSession implements Comparable<MovieSession> { 
    @Override 
    public int compareTo(MovieSession currentMovieSession) { 

    } 
} 

und wichtigste Methode

public static void main(String[] args) { 

    List<MovieSession> movieSessions = new ArrayList<MovieSession>(); 

    MovieSession cinema1 = new MovieSession("XYZ", 'R', new Time(10, 10, 10)); 
    MovieSession cinema2 = new MovieSession("ABC", 'G', new Time(11, 00, 00)); 

    movieSessions.add(cinema1); 
    movieSessions.add(cinema2); 
    Collections.sort(movieSessions); 
    System.out.print(movieSessions);  
} 

nicht sicher, was hier schief geht.

+0

Warum verwenden Sie rohe Typen überall? – user2357112

+0

Oh, warte, sie sehen nur roh aus, weil du nicht richtig formatiert hast. – user2357112

+0

danke für die Bearbeitung passiert es immer bei mir – WonderGal

Antwort

0

kopiert ich Ihren Code, hinzugefügt, um die fehlenden Bits, und es läuft ohne Fehler

Main:

import java.sql.Time; 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.List; 

public class TestBed { 

public static void main(String[] args) { 
     List<MovieSession> movieSessions = new ArrayList<MovieSession>(); 

     MovieSession session1 = new MovieSession("Logan", 'R', new Time(10, 10, 10)); 
     MovieSession session2 = new MovieSession("Baby Boss", 'G', new Time(11, 00, 00)); 
     MovieSession session3 = new MovieSession("Guardians Of The Galaxy ", 'M', new Time(9, 30, 00)); 
     MovieSession session4 = new MovieSession("Moana", 'G', new Time(13, 45, 00)); 


     movieSessions.add(session1); 
     movieSessions.add(session2); 
     movieSessions.add(session3); 
     movieSessions.add(session4); 

     Collections.sort(movieSessions); 
     System.out.println(movieSessions); 
    } 

} 

MovieSession:

import java.sql.Time; 

public class MovieSession implements Comparable<MovieSession> { 

    private Time sessionTime; 
    private String movieName; 
    private char rating; 

    public MovieSession(String mn, char rtg, Time tm){ 
     this.sessionTime = tm; 
     this.movieName = mn; 
     this.rating = rtg; 
    } 

    @Override 
    public int compareTo(MovieSession currentMovieSession) { 
     if (getSessionTime().compareTo(currentMovieSession.getSessionTime()) > 0) { 
      return 1; 
     } else if (getSessionTime().compareTo(currentMovieSession.getSessionTime()) < 0) { 
      return -1; 
     } else if (getSessionTime().compareTo(currentMovieSession.getSessionTime()) == 0) { 
      if (getMovieName().compareTo(currentMovieSession.getMovieName()) > 0) { 
       return 1; 
      } else if (getMovieName().compareTo(currentMovieSession.getMovieName()) < 0) { 
       return -1; 
      } 
     } 
     return 0; 
    } 

    public String toString(){ 
     return String.format("%s - %s - %s", movieName, rating, sessionTime); 
    } 


    public Time getSessionTime() { 
     return sessionTime; 
    } 


    public void setSessionTime(Time sessionTime) { 
     this.sessionTime = sessionTime; 
    } 


    public String getMovieName() { 
     return movieName; 
    } 


    public void setMovieName(String movieName) { 
     this.movieName = movieName; 
    } 

} 

Ausgang: [Guardians Of The Galaxy - M - 09:30:00, Logan - R - 10:10:10, Baby Boss - G - 11:00:00, Moana - G - 13:45:00]

+0

Vielen Dank für die Hilfe @DevonSutherland. Aber ich habe immer noch den gleichen Fehler. Liegt es daran, dass meine Hauptmethode in MovieSession ist? – WonderGal

+0

Also ging ich voran und probierte das aus, aber ich kann deinen Fehler immer noch nicht reproduzieren, sorry. Können Sie Ihre Importe und die tatsächliche Ausnahme posten? –

+0

Warum nicht 'return getMovieName(). CompareTo (currentMovieSession.getMovieName());' für den sekundären Vergleich? –

Verwandte Themen