Java 代码问题...收到错误消息说我为我的方法使用了错误的参数,但它们看起来是一样的?

问题描述 投票:0回答:0

我收到此错误,“首选项类型中的方法 mergeSort(java.util.ArrayList) 不适用于我的代码中的参数 (java.util.ArrayList)Java(67108979)”(我将在下面粘贴)。但对我来说,它看起来像是完全相同的方法,所以我对哪里出了问题感到困惑。

错误出现在我尝试调用mergeSort的两行preferenceSimilarity中

import java.util.*;



public class Preferences<T>{
    //Combine the two ArrayLists
    private ArrayList<T> merge(ArrayList<T> left, ArrayList<T> right){
        ArrayList<T> result= new ArrayList<T>();
        int i=0; int j=0;
        while ((i< left.size()) && (j<right.size())){
            if (left.get(i).equals(right.get(j))){
                result.add(left.get(i));
                i++;
                j++;
            }
            else if(left.get(i).hashCode()< right.get(j).hashCode()){
                i++;
            }
            else{
                j++;
            }
        }
        return result;
    }

//MERGE SORT
public ArrayList<T> mergeSort(ArrayList<T> list1){
    if (list1.size()<=1){
        return list1;
    }

    int mid= list1.size()/2;
    ArrayList<T> left= new ArrayList<T>(list1.subList(0,mid));
    ArrayList<T> right = new ArrayList<T>(list1.subList(mid,list1.size()));

    left= mergeSort(left);
    right= mergeSort(right);

    return merge(left, right);
}

public static <T> double preferenceSimilarity(ArrayList<T> list1, ArrayList<T> list2){
   ** ArrayList<T> sorted1= mergeSort((ArrayList<T>) list1); //INCOMPATIBLE TYPES?? 
    ArrayList<T> sorted2= mergeSort((ArrayList<T>) list2);**

    double similarity= 0.0;
    int i=0;
    int j=0;
    while (i < sorted1.size() && j < sorted2.size()) {
        if (sorted1.get(i).equals(sorted2.get(j))) {
            similarity++;
            i++;
            j++;
        } else if (sorted1.get(i).hashCode() < sorted2.get(j).hashCode()) {  //HashCode returns integer value
            i++;
        } else {
            j++;
        }
    }

    double totalLen= Math.max(sorted1.size(),sorted2.size());
    return (similarity/totalLen);
 }

}

我试着对它们进行类型转换,但什么也没做。我还尝试切换我的参数类型,但这没有用,因为我需要我的解决方案来处理泛型类型。

java runtime-error mergesort
© www.soinside.com 2019 - 2024. All rights reserved.