2017-04-25 285 views
-3

目前我正在學習Java。我有問題java.utils.Collections,NetBeans不斷給我這個錯誤。找不到合適的方法Collections.sort(列表)

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> 

我有下面的類MovieSession

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

    } 
} 

及主要方法

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);  
} 

不知道是怎麼回事錯在這裏。

+0

爲什麼到處都使用原始類型? – user2357112

+0

哦,等等,他們只是看起來很生硬,因爲你沒有正確的代碼格式。 – user2357112

+0

感謝編輯它總是發生在我身邊 – WonderGal

回答

0

我複製你的代碼,增加了失位,並且它運行沒有任何錯誤

主營:

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; 
    } 

} 

輸出: [監護人銀河 - M - 09:30:00,Logan - R - 10:10:10,Baby Boss - G - 11:00:00,Moana - G - 13:45:00]

+0

非常感謝@DevonSutherland。但我仍然有同樣的錯誤。是因爲我的主要方法在MovieSession裏面嗎? – WonderGal

+0

所以我繼續嘗試,但我仍然無法重現您的錯誤,對不起。你能發佈你的導入和實際的異常嗎? –

+0

爲什麼不'返回getMovieName()。compareTo(currentMovieSession.getMovieName());'爲輔助比較? –

相關問題