2017-06-12 62 views
-1

我有以下接口:如何正确使用Java中字符串的Comparable?

public interface Generator <T> { 
public T next();} 

,并且有几个方法和字段的类。我将按顺序编写我的代码,以便您了解我的探索。 类:

public class Example implements Comparable <Example>{} 

这个类有像字段:

private String name; 
private static int count; 
private int ID = count ++; 
private static char [] chars = "qwertyuiopasdfghjklzxcvbnm".toCharArray(); 

构造:

public Example (String name){ 
    this.name = name; 
} 

方法,它返回有关类信息:

public String toString(){ 
    return "ID #" + ID + ", name: " + name; 
} 

方法机生产线CES新类:

public static Generator <Example> generator(){ 
    return new Generator <Example>(){ 
     public Example next() { 
      Random rand = new Random(); 
      StringBuilder str = new StringBuilder(); 
      for (int i=0; i!=10; i++) 
       str.append(chars[rand.nextInt(chars.length)]); 
      return new Example (str.toString()); 
     } 
    }; 
} 

,这令人费解的方法,我无法理解:产生

public int compareTo(Example o) { 
    return (this.name < o.name ? -1 : (this.name == o.name ? 0 : 1)); // It does not works... :(
} 

通用法阵:

public static <T> List <T> array (List <T> list, Generator <T> gen, int size){ 
    for (int i=0; i!=size; i++){ 
     list.add(gen.next()); 
    } return list; 
} 

,当我尝试比较主要方法排序阵列:

public static void main (String [] args){ 
    List <Example> list = new ArrayList <Example>(); // Created the array; 
    array (list, generator(), 10); // Filled the array; 
    Collections.sort(list); // Doesn't work :(

} 

我很抱歉我的英语。英语不是我的母语。 谢谢你compareTo()实现您与<操作是无效的比较字符串:)

回答

1
return (this.name < o.name ? -1 : (this.name == o.name ? 0 : 1)); // It does not works... :(

。你可以像

return this.name.compareTo(o.name); // for natural string comparison 
+0

非常感谢!:) –

相关问题