Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/java-note-list-interlaced-combine.html

Java 实现两个列表的交错合并

Java 笔记 Java 笔记


Java 实现两个列表(list)的元素交错合并(拼接)。

需求

Java 实现两个列表的元素交错合并,如有两个列表 a=["o","p","q"]b=["x","y","z"],写个方法,将列表连接后返回结果为:["o","x","p","y","q","z"]

注:对于临界条件可以兼容,如两个列表长度不相等或其中为空等等情况。

样例

import java.util.ArrayList;
import java.util.List;

public class Demo {

    /**
     * 将两个列表的元素交错合并为一个列表
     *
     * @param list1 第一个列表
     * @param list2 第二个列表
     * @return
     */
    public static List<String> interlacedCombine(List<String> list1, List<String> list2) {
        int size1 = list1.size();
        int size2 = list2.size();

        int minSize = Math.min(size1, size2);

        List<String> list = new ArrayList<>(size1 + size2);

        if (minSize > 0) {
            /**
             * 以最小的列表大小,交错合并
             */
            for (int i = 0; i < minSize; i++) {
                String str1 = list1.get(i);
                String str2 = list2.get(i);
                list.add(str1);
                list.add(str2);
            }

            /**
             * 将 size 更大的列表交错后,多余的部分直接追加到尾部
             */
            if (size1 > size2) {
                list.addAll(list1.subList(size2, size1));
            } else if (size1 < size2) {
                list.addAll(list2.subList(size1, size2));
            }
        } else {//  至少有一个空列表时
            if (!list1.isEmpty()) {
                list.addAll(list1);
            }
            if (!list2.isEmpty()) {
                list.addAll(list2);
            }
        }

        return list;
    }

    public static void main(String[] args) {

        List<String> list1 = new ArrayList<>();
        List<String> list2 = new ArrayList<>();

        list1.add("x1");
        list1.add("x2");
        list1.add("x3");
        list1.add("x4");
        list1.add("x5");
        list1.add("x6");

        list2.add("y1");
        list2.add("y2");
        list2.add("y3");
        list2.add("y4");
        list2.add("y5");
        list2.add("y6");
        list2.add("y7");

        System.out.println(interlacedCombine(list1, list2));

    }

}
以下是这些方法:###使用循环遍历这是一种最基本的方法,通过循环遍历两个数组,将元素一个一个地添加到一个新的数组中。示例代码:###使用Ja ...
假设我们有两个List,分别是list1和list2,我们的目标是将它们合并成一个新的List。###使用ApacheCommonsColl ...
下面我将介绍三种常见的方式,包括使用循环、使用`addAll()`方法和使用JavaStream。使用`addAll()`方法将第二个Lis ...
为了演示方便,我们假设你要合并的两个Map的类型都是`Map<String,String>`。###使用putAll方法这是最简单的方法之一 ...
手动合并:也可以手动编写Java代码来解析PDF文件格式,然后将多个PDF文件的内容合并到一个新的PDF文件中。以下是使用PDFBox来合并 ...