两个list交错拼接

两个list,[1,2,3]和[a,b,c]

写个函数,将list连接,返回结果为:[1,a,2,b,3,c]

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

public class ListAdd {

	public static void main(String[] args) {
		List<Character> list1 = new ArrayList<Character>();
		List<Character> list2 = new ArrayList<Character>();

		list1.add('a');
		list1.add('b');
		list1.add('c');
		list1.add('d');
		list1.add('e');

		list2.add('1');
		list2.add('2');
		list2.add('3');

		List<Character> list = joinLists(list1, list2);

		System.out.println(list);
	}

	public static List<Character> joinLists(List<Character> list1, List<Character> list2) {
		// 构建结果list,长度为两个入参list长度之和
		List<Character> list = new ArrayList<Character>(list1.size() + list2.size());

		// 若list1长度大于list2
		if (list1.size() > list2.size()) {

			// 以list2的长度为限制,开始循环
			for (int i=0; i < list2.size(); i++) {
				list.add(list1.get(i));
				list.add(list2.get(i));
			}

			// 将list1 中多于list2长度的元素,放入list中
			list.addAll(list1.subList(list2.size(), list1.size()));

		} else if (list1.size() < list2.size()) { // 若list2 的长度大于list1

			// 以list1的长度为限制,开始循环
			for (int i=0; i < list1.size(); i++) {
				list.add(list1.get(i));
				list.add(list2.get(i));
			}

			// 将list2 中多于list1长度的元素,放入list中
			list.addAll(list2.subList(list1.size(), list2.size()));

		} else { // list1 长度与list2 长度相等

			for (int i=0; i < list1.size(); i++) {
				list.add(list1.get(i));
				list.add(list2.get(i));
			}
		}

		return list;
	}
}

两个list,进行for循环时,以元素少的那个为限制,进行遍历,遍历完后,将元素多个那个里面多余的元素拼接在结果集后面;若两个list长度相等,那就直接逐个拼接就可以了。

时间: 2024-12-16 16:11:59

两个list交错拼接的相关文章

Python 将两个绝对路径拼接

import os def two_abs_join(abs1, abs2): """ 将 绝对路径将两个绝对路径拼接, 就是将第二个的开路径(windows 的 C, D,E ... Linux 的 /root 最前面的 / 删除掉) :param abs1: 为主的路径 :param abs2: 被拼接的路径 :return: 拼接后的数值 """ # 1. 格式化路径(将路径中的 \\ 改为 \) abs2 = os.fspath(abs2

OpenCv实现两幅图像的拼接

直接贴上源码 来源:http://www.myexception.cn/image/1498389.html 实验效果 Left.jpg???????????????????????????? right.jpg ImageMatch.jpg ? #include <iostream> #include <iomanip> #include "opencv2/core/core.hpp" #include "opencv2/objdetect/objd

c++实现两个文件的拼接。

问题描述: 要求把第二个文件拼接到第一个文件的末尾. 如把file2 拼接到 file末尾. (直接复制一下不久行了嘛! 但是老师非让编程, 真是蛋疼!!).例如: file1: I am not responsible of this code. They made me write it, against my will.   file2: When I wrote this, only God and I understood what I was doing. Now, God only

JavaScript中两个数组的拼接

方法一:使用for循环 var arr = ['tom', 'jerry']; var arr2 = [1, 2]; for(var i=0; i<arr2.length; i++){ arr.push(arr2[i]) } console.log(arr); // ['tom', 'jerry', 1, 2] 方法二:使用concat(),注意concat()方法生成了一个新的数组,并不改变原来的数组. var arr = ['tom', 'jerry']; var arr2 = [1, 2]

iOS拼接json字符串的两种方式

两种json字符串拼接的方法如下: + (NSString *)UIUtilsFomateJsonWithDictionary:(NSDictionary *)dic { NSArray *keys = [dic allKeys]; NSString *string = [NSString string]; for (NSString *key in keys) { NSString *value = [dic objectForKey:key]; value = [NSString strin

第十五讲.数据解析(XML与JSON两种数据解析)

一.XML数据解析 1.SAX:Simple API for XML.基于事件驱动的解析方式,逐行解析数据.(采用协议回调机制) NSXMLParser的解析方法: 1 #import "ViewController.h" 2 #import "Model.h" 3 4 @interface ViewController ()<NSXMLParserDelegate> 5 6 @property(nonatomic,strong)UITableView

字符串的拼接和intern方法

String s1 = "Programming"; String s2 = new String("Programming"); String s3 = "Program"; String s4 = "ming"; String s5 = "Program" + "ming"; String s6 = s3 + s4; System.out.println(s1 == s2);//fa

JavaSE7基础 println中使用+ 进行字符串与数字的拼接

jdk版本  :jdk-7u72-windows-i586系统     :Windows7编辑器   :Notepad++ v7.4.2注意事项 :博文内容仅供参考,不可用于其他用途. 代码 class Demo{ public static void main(String[] args){ System.out.println("3+2"+1+0);//进行了两次字符串的拼接 System.out.println("3+2"+(1+0));//进行了一次字符串的

SQL-基础学习3--通配符:LIKE,%,(_); 拼接:+,||,concat;

第六课 用通配符进行过滤 6.1  LIKE操作符 通配符本身实际上是SQL的WHERE子句中有特殊含义的字符,SQL支持几种通配符.为在搜索子句中使用通配符,必须使用LIKE操作符.LIKE指示DBMS,后跟的搜索模式利用通配符匹配而不是简单的相等匹配进行比较. 通配符搜索只能用于文本字段(串),非文本数据类型字段不能使用通配符搜索. 6.1.1 百分号(%)通配符 最常使用的通配符是百分号(%).在搜索串中,%表示任何字符出现任意次数. 例如,为了找出所有以词Fish起头的产品,可发布以下S