java list 合并去重_java 2个list 交错合并

有这样一个需求:

list1="1", "2", "3"

list2="a", "b", "c", "d"

现在需要把2个list交替合并,使结果为:

1, a, 2, b, 3, c, d

解决方法:

将2个list分别放到2个链表队列中,然后遍历较长的list,分别从队列中pool数据到新队列。直接看代码:

@Test

public void listTest() {

List source1 = Arrays.asList("1", "2", "3");//源list1

List source2 = Arrays.asList("a", "b", "c", "d");//源list2

//分别将2个list放入链表队列

LinkedList list1 = new LinkedList<>(source1);

LinkedList list2 = new LinkedList<>(source2);

//计算较大的数组长度

int max = source1.size() > source1.size() ? source1.size() : source2.size();

//新建一个数组list,来接受最终结果

List list = new ArrayList<>(source1.size() + source1.size());

//遍历较大长度,保证所有数据都能取到

for (int i = 0; i < max; i++) {

if (!list1.isEmpty()) {//如果队列还没取完,继续取

list.add(list1.poll());

}

if (!list2.isEmpty()) {//如果队列还没取完,继续取

list.add(list2.poll());

}

}

//打印结果

System.out.println(list);

}

查看结果:

[1, a, 2, b, 3, c, d]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值