2017-04-25 37 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());'为辅助比较? –

相关问题