2013-08-29 42 views
2

我收到以下錯誤,當我運行的代碼 我應該創建該類的類Mycomp其中這些方法是寫比較在java中不工作

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

(列表)的對象。推斷型產品是不是有界參數的有效替代品>

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

我比較實現類是如下

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

} 
+0

您應該使用Collections.sort(L),其中L是列表對象正在編寫Collections.sort((pr),這是錯誤的第一個錯誤是你沒有關閉括號和其他它不是一個有效的參數方法排序它應該是任何對象,它實現了Collection – nilamber

回答

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

當yousing Collections.sort(l);你的產品類必須實現Comparable