Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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通用树映射_Java_Generics - Fatal编程技术网

带有比较器声明且无警告的Java通用树映射

带有比较器声明且无警告的Java通用树映射,java,generics,Java,Generics,下一步我有什么办法可以不显示黄色警告/@SuppressWarnings(“未选中”) 泛型对象: p=要比较的产品,C=客户 public static myComparator<Product<P>> comparator= new myComparator<Product<P>>(); publicstaticmycomparatorcomparator=newmycomparator(); 比较器声明在“insertIntoMap”方法

下一步我有什么办法可以不显示黄色警告/@SuppressWarnings(“未选中”)

泛型对象:

p=要比较的产品,C=客户

public static myComparator<Product<P>> comparator= new myComparator<Product<P>>();
publicstaticmycomparatorcomparator=newmycomparator();
比较器声明在“insertIntoMap”方法之外, 我无法在“insertIntoMap”方法中使用产品

对象

publicstatictreemap插入图(LinkedHashSet

set,C[]ac){ @抑制警告(“未选中”)


TreeMap TreeMap=新的TreeMap((比较器从您发布的代码中可以看出:

myComparator不应是通用的:

public class myComperator implements Comparator<Product<?>> {
    @Override
    public int compare(Product<?> o1, Product<?> o2) {
        if (o1.getName().length() > o2.getName().length())
            return 1;
        else if (o1.getName().length() < o2.getName().length())
            return -1;
        else
            return -1;
    }
}

什么是
comperator
以及它是如何声明的?很难理解你想做什么。这甚至不能编译。请将你的代码编辑成可编译的东西,否则很难知道你想完成什么。
TreeMap
需要一个
比较器,我不能在方法中使用产品我知道希望你是对的,我的讲师要道歉^^他想让我使用带比较器的映射来比较乘积,而不使用对象“product”在方法内部。你不应该在
insertIntoMap
myComperator
中使用
Product
?你可以将comparator作为参数来传递,以避免第一个参数。令人惊讶的是,你是对的,我通过了它,而且它很有效……我希望他不会说我甚至不能通过它……因为他说这个方法只得到2个参数rs,非常感谢你!!!
public static class Product<E> implements Comparable<E>{

    private E serialNum;
    private String name;

    Product(E serialNum,String name){

        setSerialNum(serialNum);
        setName(name);
    }


    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result;
        result = prime * result + ((serialNum == null) ? 0 : serialNum.hashCode());
        return result;
    }


    @Override
    public boolean equals(Object obj) {
        Product<?> other = (Product<?>) obj;
        if (serialNum.equals(other.serialNum))return true;
        else return false;
    }



    public E getSerialNum() {
        return serialNum;
    }
    public void setSerialNum(E serialNum) {
        this.serialNum = serialNum;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public String toString() {
        return serialNum.toString()+": "+name;
    }


    @Override
    public int compareTo(E o) {
       if(this.hashCode()>o.hashCode())return 1;
       else if(this.hashCode()<o.hashCode()) return -1;
       else return -1;
    }




}
public class myComperator implements Comparator<Product<?>> {
    @Override
    public int compare(Product<?> o1, Product<?> o2) {
        if (o1.getName().length() > o2.getName().length())
            return 1;
        else if (o1.getName().length() < o2.getName().length())
            return -1;
        else
            return -1;
    }
}
public static <P extends Product<?>, C> TreeMap<P, C> insertIntoMap(
        LinkedHashSet<P> set, C[] ac) {

    TreeMap<P, C> treeMap = new TreeMap<P, C>(new myComperator());

    int itrIndex = 0;
    Iterator<P> itr = set.iterator();

    while (itr.hasNext()) {
        treeMap.put(itr.next(), ac[itrIndex]);
        itrIndex++;
    }

    return treeMap;
}