2014-10-02 45 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