[英]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.