我附上以下代码,我想将其排序为
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)
答案 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);
}