使用java集合对String进行排序

时间:2014-01-21 14:15:36

标签: java sorting

我附上以下代码,我想将其排序为

 class sort{
    public static void main(String args[])  
    {String a ="this is a kiran";  
    StringTokenizer st =new StringTokenizer(a);  
    List f=new ArrayList();  
    f.add(st);  
    Collections.sort(f);  
    System.out.println("after sortting "+f);  
    }
 }

我希望输出为:

a
is 
kiran 
this

但我得到一个例外: - 线程“main”java.lang.ClassCastException中的异常:java.util.StringTokenizer无法强制转换为java.lang.Comparableat java.util.Collections.sort(UnknownSource)atcom.sort.main(Sort.java:18)

4 个答案:

答案 0 :(得分:4)

更改您的代码。你需要纠正一些错误。

    String a ="this is a kiran";
    StringTokenizer st =new StringTokenizer(a);
    List<String> f=new ArrayList<>(); // use String type list
    while (st.hasMoreTokens()){ // add all tokens by iterating st
        f.add(st.nextToken()); // add tokens to list
    }
    Collections.sort(f);
    System.out.println("after sorting "+f);

Out put:

   after sorting [a, is, kiran, this]

现在您将获得排序列表

答案 1 :(得分:2)

问题在于:

f.add(st);

您要将StringTokenizer添加到列表中,而不是添加单个令牌。更改代码以使用泛型会有所帮助:如果您将List声明为List<String>,代码将无法编译,指向正确的方向:

List<String> f=new ArrayList<String>();

添加while循环以从st收集令牌,并逐个将其添加到f

P.S。由于这几乎肯定是一个学习练习,我不会通过完成你的代码来破坏你的乐趣。

答案 2 :(得分:1)

您还可以使用hasMoreElements()nextElement()

class sort{
   public static void main(String args[])  {
       String a ="this is a kiran";
        StringTokenizer st =new StringTokenizer(a);
        ArrayList<String> f=new ArrayList<String>(); // use String type list
        while (st.hasMoreElements()){ // add all by iterating st
        f.add((String) st.nextElement()); // add tokens to list
    }
    Collections.sort(f);
    System.out.println("after sorting "+f);
    }
 }

答案 3 :(得分:0)

考虑使用String.split()来拆分字符串。 类名应该是名词, 方法名称应该是动词或动词短语, 你应该使用泛型。

public static void main(String[] arguments)
{
    String input = "this is hootberry sause";  
    String[] inputArray;
    List<String> inputList = new ArrayList<String>();

    inputArray = input.split(" ");
    Collections.addAll(inputList, inputArray);
    Collections.sort(inputList);

    System.out.println("Before sort: " + input);
    System.out.println("After sort: " + inputList);
}