我们在学校要做的任务按字母顺序将两个不同的ArrayList
分成一个最终的arraylist,它按字典顺序包含两个列表元素
例如......
ArrayList sent1
按字母顺序排列[., adam, mark]
ArrayList sent2
按字母顺序排列[., betsy, kyle, william]
ArrayList sent3
必须按字母顺序包含两个ArrayLists中的所有元素。
我似乎无法弄明白该怎么做。我的讲师提到使用while循环,但我不仅仅了解如何编写进程代码。将sent1
和sent2
合并到sent3
然后使用Collections.sort(sent3)
会使过程变得更加容易和紧凑,但实验室的目标是练习使用{ {1}}。
答案 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文档。