Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:使用Comparator时Collection.sort()不匹配_Java_Android_Sorting_Arraylist - Fatal编程技术网

Java Android:使用Comparator时Collection.sort()不匹配

Java Android:使用Comparator时Collection.sort()不匹配,java,android,sorting,arraylist,Java,Android,Sorting,Arraylist,我试着按字母顺序排列一系列电影,忽略大小写。我的应用程序允许用户将自己的条目添加到ListView中已初始化的电影数组中。以下是片段: Lab7_082588FetchDetails newMovie = new Lab7_082588FetchDetails(); IgnoreCaseComparator ignoreCase = new IgnoreCaseComparator(); newMovie.setTitle(

我试着按字母顺序排列一系列电影,忽略大小写。我的应用程序允许用户将自己的条目添加到ListView中已初始化的电影数组中。以下是片段:

            Lab7_082588FetchDetails newMovie = new Lab7_082588FetchDetails();
            IgnoreCaseComparator ignoreCase = new IgnoreCaseComparator();
            newMovie.setTitle(data.getStringExtra(Lab7_082588Edit.TITLE_STRING));
            newMovie.setGross(data.getStringExtra(Lab7_082588Edit.GROSS_STRING));
            newMovie.setDate(data.getStringExtra(Lab7_082588Edit.DATE_STRING));
            results.add(newMovie);
            adapter.notifyDataSetChanged();
            Collections.sort(results, ignoreCase);
但是,最后一行的.sort部分给出了一条错误消息:

The method sort(List<T>, Comparator<? super T>) in the type Collections is not applicable for the arguments (ArrayList<Lab7_082588FetchDetails>, IgnoreCaseComparator)

方法排序(列表,比较器使用比较器或comparable

Comparable:当您可以更改类结构以添加compareTo方法时

比较器:如果你不能改变类结构

此外,两者都应与需要比较的对象一起传递。
在您的情况下,comparator是为
字符串编写的,您正在传递
Lab7\u 082588FetchDetails

使用comparator或comparable

Comparable:当您可以更改类结构以添加compareTo方法时

比较器:如果你不能改变类结构

此外,两者都应与需要比较的对象一起传递。
在您的例子中,比较器是为
字符串编写的,您正在传递
Lab7_082588FetchDetails

我尝试过将比较器更改为接受对象,但它确实对我产生了影响。它工作得很好。我不敢相信我从未想过这一点。非常感谢您的帮助thinsteep先生!很高兴它有帮助。享受编码。我尝试过changing比较器接受对象,但它确实对我产生了影响。它工作得非常完美。我不敢相信我从未想过这一点。非常感谢thinsteep先生的帮助!很高兴它有帮助。享受编码。
import java.util.Comparator;

class IgnoreCaseComparator implements Comparator<String> {
    public int compare(String strA, String strB) {
        return strA.compareToIgnoreCase(strB);
    }  
}
public class Lab7_082588FetchDetails implements Comparable<Lab7_082588FetchDetails> {

private String title;
private String gross;
private String date;

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public String getGross() {
    return gross;
}

public void setGross(String gross) {
    this.gross = gross;
}

public String getDate() {
    return date;
}

public void setDate(String date) {
    this.date = date;
}

@Override
public int compareTo(Lab7_082588FetchDetails another) {
    // TODO Auto-generated method stub
    return title.compareTo(another.title);
}

}
implements Comparator<String>
public int compare(Lab7_082588FetchDetails objA, Lab7_082588FetchDetails objB) {
        return objA.getTitle().compareToIgnoreCase(objB.getTitle());
    }