java中的比较器无法正常工作

时间:2013-08-29 08:50:49

标签: java collections comparator

运行代码时出现以下错误 我应该在编写此方法的类中创建Mycomp类的对象

Bound mismatch: The generic method sort(List<T>) of type Collections is not applicable for the arguments 

(列表)。推断类型Product不是有界参数&gt;

的有效替代品
    public List<Product> displaySortedShoppingCart(String userName) throws ShoppingCartNotFoundException
{
    getConnection();
    ResultSet rs;
    boolean flag=false;
    List<Product> l=new ArrayList<Product>();
    String sql="select *from scart where username='"+userName+"'";
    try {
        rs=stmt.executeQuery(sql);
        while(rs.next())
        {
            flag=true;
            Product pr=new Product();
            pr.setname(rs.getString(2));
            l.add(pr);
            //System.out.println(rs.getString(2));
        }
        if(flag==false)
            throw new ShoppingCartNotFoundException();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    //SortProduct sp=new SortProduct(new Product());

    Collections.sort(l);
    return l;
}

My Comparator实现类如下

import java.util.Comparator;

import com.bean.Product;


public class SortProduct implements Comparator {

    @Override
    public int compare(Object o1,Object o2)
    {

    Product p1=(Product)o1;

    Product p2=(Product)o2;

    int temp=p1.getName().compareTo(p2.getName());
    return temp;
    }

}

2 个答案:

答案 0 :(得分:4)

第1步:将您的比较器键入Comparator<Product>

public class SortProduct implements Comparator<Product> {
    @Override
    public int compare(Product p1, Product p2) {
        return p1.getName().compareTo(p2.getName());
    }
}

注意如何更清晰地输入代码 - 无需进行强制转换。

步骤2:将比较器的实例传递给排序方法:

Collections.sort(l, new SortProduct());

答案 1 :(得分:1)

当您使用Collections.sort(l);时,您的产品类必须实施Comparable