繁体   English   中英

使用Java集合对字符串排序

[英]Sorting a String using java collections

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

 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

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

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

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

输出:

   after sorting [a, is, kiran, this]

现在您将获得排序列表

问题在这里:

f.add(st);

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

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

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

附注:由于几乎可以肯定这是一项学习练习,因此我不会通过编写代码来为您带来乐趣。

您还可以使用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);
    }
 }

考虑使用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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM