我试图运行一个简单的ArrayList
程序.我已经使用collections.sort()
了它的方法,但我没有得到输出排序.我使用collections.sort()
方法的方式有什么问题吗?
请帮助我找到根本原因.
import java.util.ArrayList;
import java.util.Collections;
import java.util.Vector;
public class Vector1 {
public static void main(String args[])
{
ArrayList<String> arraylist=new ArrayList<String>();
arraylist.add("Register.classname");
arraylist.add("com.jdbc.driver");
arraylist.add("create Statement");
arraylist.add("String Sql=Create table hello(column1 Number);");
arraylist.add("execute Statement");
Vector<String> vectorlist=new Vector<String>();
vectorlist.add("Register.classname");
vectorlist.add("com.jdbc.driver");
vectorlist.add("create Statement");
vectorlist.add("String Sql=Create table hello(column1 Number);");
vectorlist.add("execute Statement");
Collections.sort(arraylist);
Collections.sort(vectorlist);
for(int i=0; i<arraylist.size();i++)
{
System.out.println("Arraylist:"+arraylist.get(i));
}
for(int j=0;j<arraylist.size();j++)
{
System.out.println("Vectorlist:"+vectorlist.get(j));
}
}
}
Output:
Arraylist:Register.classname
Arraylist:String Sql=Create table hello(column1 Number);
Arraylist:com.jdbc.driver
Arraylist:create Statement
Arraylist:execute Statement
Vectorlist:Register.classname
Vectorlist:String Sql=Create table hello(column1 Number);
Vectorlist:com.jdbc.driver
Vectorlist:create Statement
Vectorlist:execute Statement
Run Code Online (Sandbox Code Playgroud)
那是有条件的.它只是根据String.compareTo
哪个是有序的词典比较进行排序.在Unicode中,所有ASCII大写字母都早于ASCII小写字母,这就是为什么你得到你得到的结果.
如果你想有一个区分大小写的比较,你应该通过一个Comparator<String>
来Collections.sort
-例如Collator
.
顺便说一句,这段代码被破坏了:
for(int j=0;j<arraylist.size();j++)
{
System.out.println("Vectorlist:"+vectorlist.get(j));
}
Run Code Online (Sandbox Code Playgroud)
你应该使用vectorlist.size()
.或者,更好的是,使用增强的for循环:
for (String item : vectorlist) {
System.out.println("Vectorlist: " + item);
}
Run Code Online (Sandbox Code Playgroud)