Java 找不到适合集合的方法。排序(列表)

Java 找不到适合集合的方法。排序(列表),java,collections,Java,Collections,目前我正在学习Java 我在java.utils.Collections方面遇到问题,NetBeans不断给我这个错误 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

目前我正在学习Java

我在
java.utils.Collections
方面遇到问题,NetBeans不断给我这个错误

 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>
找不到适合排序的方法(列表)
方法集合。排序(列表)不适用
(推理变量T#1的边界不兼容
平等约束:电影节

上限:Compariable我复制了您的代码,添加了缺少的位,并且运行时没有任何错误

主要内容:

import java.sql.Time;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.List;
公共类试验台{
公共静态void main(字符串[]args){
List movieSessions=new ArrayList();
MovieSession session1=新的MovieSession(“Logan”,“R”,新时间(10,10,10));
MovieSession session2=新的MovieSession(“小老板”,“G”,新时间(11,00,00));
MovieSession session3=新的MovieSession(“银河守护者”,“M”,新时间(9,30,00));
MovieSession session4=新的MovieSession(“Moana”,“G”,新时间(13,45,00));
增加(第1节);
增加(第2节);
增加(第3节);
增加(第4节);
收藏。分类(电影节);
系统输出打印(电影节);
}
}
电影节:

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

}
import java.sql.Time;
公共类MovieSession实现了可比性{
私人时间会话时间;
私有字符串movieName;
私有字符评级;
公共电影会话(字符串mn、字符rtg、时间tm){
this.sessionTime=tm;
this.movieName=mn;
该额定值=rtg;
}
@凌驾
公共国际比较(MovieSession currentMovieSession){
如果(getSessionTime().compareTo(currentMovieSession.getSessionTime())>0){
返回1;
}else if(getSessionTime().compareTo(currentMovieSession.getSessionTime())<0){
返回-1;
}else if(getSessionTime().compareTo(currentMovieSession.getSessionTime())==0){
如果(getMovieName().compareTo(currentMovieSession.getMovieName())>0){
返回1;
}else if(getMovieName().compareTo(currentMovieSession.getMovieName())<0){
返回-1;
}
}
返回0;
}
公共字符串toString(){
返回String.format(“%s-%s-%s”,movieName,rating,sessionTime);
}
公共时间getSessionTime(){
返回会话时间;
}
public void setSessionTime(Time sessionTime){
this.sessionTime=sessionTime;
}
公共字符串getMovieName(){
返回movieName;
}
公共无效setMovieName(字符串movieName){
this.movieName=movieName;
}
}
输出:
[银河守护者-M-09:30:00,洛根-R-10:10:10,小老板-G-11:00:00,摩安娜-G-13:45:00]

为什么到处都使用原始类型?哦,等等,它们看起来都是原始的,因为您没有正确地编码格式。感谢您的编辑,它总是伴随着您me@WonderGal因此,底部的语句不在方法中?我认为如果没有一段完全可复制的代码,我们将无法提供帮助,因为它看起来确实很好我从这里开始,但这不是全部代码。谢谢@DevonSutherland的帮助。但我仍然有相同的错误。是因为我的主要方法是在MovieSession中吗?所以我继续尝试,但我仍然无法重现您的错误,抱歉。您可以发布导入和实际异常吗?为什么不
返回getMovieName().compareTo(currentMovieSession.getMovieName());
进行第二次比较?@DevonSutherland我已用错误更新了我的问题。谢谢
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);    
}
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);
    }

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

}