使用.compareTo()</string>按字母顺序对ArrayList <string>进行排序

时间:2014-01-11 13:53:42

标签: java comparator

我们在学校要做的任务按字母顺序将两个不同的ArrayList分成一个最终的arraylist,它按字典顺序包含两个列表元素

例如......

ArrayList sent1按字母顺序排列[., adam, mark]

ArrayList sent2按字母顺序排列[., betsy, kyle, william]

ArrayList sent3必须按字母顺序包含两个ArrayLists中的所有元素。

我似乎无法弄明白该怎么做。我的讲师提到使用while循环,但我不仅仅了解如何编写进程代码。将sent1sent2合并到sent3然后使用Collections.sort(sent3)会使过程变得更加容易和紧凑,但实验室的目标是练习使用{ {1}}。

4 个答案:

答案 0 :(得分:2)

如果每个源列表已经排序,只需查看每个列表中的第一个元素,将“lower”(按字母顺序排在第一位)添加到输出列表,然后重复。

答案 1 :(得分:0)

这很简单;

List<String> sent3 = new ArrayList<String>(sent1);
sent3.addAll(sent2);
Collections.sort(sent3, new Comparator<String>() {
    public int compare(String a, String b) {
        return a.compareTo(b); // usage here!
    }
}

答案 2 :(得分:0)

您正在寻找的是使用2个迭代器并合并这两个列表。 我会给你一些伪代码。

ArrayList sent1, sent2, sent3;
int i1, i2;
i1 = i2 = 0;
while (i1 < sent1.length() && i2 < sent2.length())
{
 if (sent1[i2].compareTo(sent2[i1])
 {
   sent3.add(sent1[i2]);
   i2++;
 }else
 {
   sent3.add(sent1[i1]);
   i21+;
 }
}
while(i1 < sent1.length()) sent3.add(sent1[i1++]);
while(i2 < sent2.length()) sent3.add(sent2[i2++]);

这里每次都会向sent3添加sent1和sent2中第一项的最小值。当我将其中一个列表清空时,我会将其余的其他元素附加到sent3。

答案 3 :(得分:0)

我认为你可以这样做:

将array1和array2复制到array3;然后,排序array3。你不知道如何使用compareTo()进行排序?检查是java文档。