二次排序的ArrayList

时间:2014-06-03 14:03:29

标签: java sorting arraylist

我一直试图在java中使用二次排序来对消息的arraylist进行排序。 我使用了以下代码,但它不会为我编译。我一直得到的错误是

  

找不到符号变量长度

以下是我正在使用的排序和交换:

 public static void quadraticSort(ArrayList<Message> m)


{
    String s1 = "abcd";
    String s2 = "efgh";
    int val = "abcd".compareTo("efgh");

    for (int i = 0; i < s1.length; i += 1)
    {
        for (int s2 = i; s2 < s1.length; s2 += 1)
       {
           if ((int)s1[s2].messageText.compareTo(0) <(int)s2[i].messageText.compareTo(0))

           {
               swap(s1, i, s2);
           }
        }

    } 
}

private static void swap(ArrayList<Message> list, int to, int from)
{
   Message temp = list[to];
   list.set(to , from);
   list.set(from , temp);
}

2 个答案:

答案 0 :(得分:4)

在您的代码中,您尝试访问不存在的length个实例的String属性/字段。相反,您希望使用length() 方法:

String s = "abc";
s.length(); // = 3
s.length; // compiler error

但是你有更多的错误。您还尝试使用数组/括号表示法访问String的索引值:

s1[s2]

以这种方式无法访问String对象的字符。您应该使用charAt()方法。

答案 1 :(得分:1)

我建议您阅读String的javadoc。在Java中,它们被视为第一类对象;不是一个字符数组。

要获取字符串的长度,您必须使用length()。此外,要从String中的给定位置获取角色,您必须使用charAt(int index)