我一直在尝试将两个已经按字母顺序排序的字符串数组列表合并为一个大的数组列表,该数组列表也按字母顺序排序。最好使用一个循环来完成此操作,但两个循环也可以。此外,还必须使用 comapreTo 方法来比较字符串。这就是我所拥有的,但它不起作用。对您来说,重新开始可能会更好,因为这可能写得不太好。
public static ArrayList<String> merge(ArrayList<String> al1, ArrayList<String> al2){
ArrayList<String> result = new ArrayList<String>();
int longLength = al1.size() > al2.size() ? al1.size():al2.size();
for(int i=0;i<longLength;i++){
if(al1.size() > i && al2.size() > i && al1.get(i).compareTo(al2.get(i)) >= 0){
result.add(al2.get(i));
}
else if(al1.size() > i && al2.size() > i && al1.get(i).compareTo(al2.get(i)) < 0) {
result.add(al1.get(i));
}
else if(al1.size() > i && al2.size() <= i) {
result.add(al1.get(i));
}
else if(al1.size() <= i && al2.size() > i) {
result.add(al2.get(i));
}
}
return result;
}
最佳答案
使用addAll()
将list2的所有元素添加到list1,然后使用实用类Collections
对它们进行排序
addAll()
将 list2 的所有元素追加到 list1 的末尾。Collections.sort()
根据其元素的自然顺序对指定列表进行升序排序
示例:
public class Main {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
list1.add("a");
list1.add("c");
List<String> list2 = new ArrayList<>();
list2.add("b");
list1.addAll(list2);// the order is "a" "c" "b" now
Collections.sort(list1);
for(String e: list1){
System.out.println(e);
}
}
}
输出:
a
b
c
关于java - 如何将 2 个 Arraylist 合并为 1 个按字母顺序排序的 Arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42561297/