Colletions.sort()方法未按预期工作

Nul*_*ter -3 java collections

我试图运行一个简单的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)

Jon*_*eet 8

有条件的.它只是根据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)

  • +1,令我惊讶的是,即使在简单的问题上,我仍然可以学到一些东西,谢谢Jon! (3认同)