2014-10-02 46 views
0

我想排序和反向以及行列表。我有collections.sort工作,但不是collections.reverse,我不知道爲什麼。集合.sort作品,但集合.reverse不適合我

作品

public List<String> descending() 
{ 
List<String> x = new ArrayList<String>(10); 
Collections.sort(oneName, new OneNameCountCompare()); 
for(OneName b: oneName) 
{ 
    x.add(b.toString()); 
    if (x.size() == 10) // Or don't use enhanced for, use an index instead 
    { 
     break; 
    } 
} 
return x; 

不起作用

錯誤:類類別方法反向不能被應用到給定的類型;

Collections.reverse(oneName,new OneNameCountCompare()); ^ 要求:名單

發現:ArrayList中,OneNameCountCompare

原因:實際的和正式的參數列表長度

public List<String> ascending() 
{ 
List<String> y = new ArrayList<String>(10); 
Collections.reverse(oneName, new OneNameCountCompare()); 
for(OneName c: oneName) 
{ 
    y.add(c.toString()); 
    if (y.size() == 10) // Or don't use enhanced for, use an index instead 
    { 
     break; 
    } 
} 
return y; 
} 
+1

[Collections.reverse(列表)](http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html #reverse%28java.util.List%29)不需要比較器。另外,你的意思是什麼不起作用? – 2014-10-02 14:09:23

+0

也許學習Javadoc或聽你的IDE的建議。 – 2014-10-02 14:10:29

+2

'reverse'用於反轉列表中的元素,而不是按降序排序。 – 2014-10-02 14:13:26

回答

1

Collections.reverse()不同之處僅接受List<E>作爲其參數!

因此,使用以下邏輯:

Collections.sort(oneName, Collections.reverseOrder(new OneNameCountCompare())); 
+0

...或者在你的比較器中實現這個邏輯。 – 2014-10-02 14:26:33

+0

yeap .....的確如此 – 2014-10-02 14:33:09