Sean Adkinso..

9

这是一个有趣的练习.我创建了一个名为ParallelList的对象,它接受可变数量的类型化列表,并且可以遍历每个索引处的值(作为值列表返回):

public class ParallelList implements Iterable> {

private final List> lists;

public ParallelList(List... lists) {

this.lists = new ArrayList>(lists.length);

this.lists.addAll(Arrays.asList(lists));

}

public Iterator> iterator() {

return new Iterator>() {

private int loc = 0;

public boolean hasNext() {

boolean hasNext = false;

for (List list : lists) {

hasNext |= (loc < list.size());

}

return hasNext;

}

public List next() {

List vals = new ArrayList(lists.size());

for (int i=0; i

vals.add(loc < lists.get(i).size() ? lists.get(i).get(loc) : null);

}

loc++;

return vals;

}

public void remove() {

for (List list : lists) {

if (loc < list.size()) {

list.remove(loc);

}

}

}

};

}

}

用法示例:

List list1 = Arrays.asList(new Integer[] {1, 2, 3, 4, 5});

List list2 = Arrays.asList(new Integer[] {6, 7, 8});

ParallelList list = new ParallelList(list1, list2);

for (List ints : list) {

System.out.println(String.format("%s, %s", ints.get(0), ints.get(1)));

}

哪个会打印出来:

1, 6

2, 7

3, 8

4, null

5, null

此对象支持可变长度列表,但显然可以将其修改为更严格.

不幸的是我无法摆脱ParallelList构造函数上的一个编译器警告:A generic array of List is created for varargs parameters,所以如果有人知道如何摆脱它,让我知道:)

`@ SuppressWarnings` ;-) (6认同)

java foreach并行_使用foreach在Java中迭代并行数组的漂亮方法相关推荐

  1. java foreach 原理_一不小心就让Java开发者踩坑的failfast是个什么鬼?

    1 什么是fail-fast 首先我们看下维基百科中关于fail-fast的解释: 在系统设计中,快速失效系统一种可以立即报告任何可能表明故障的情况的系统.快速失效系统通常设计用于停止正常操作,而不是 ...

  2. java python算法_用Python,Java和C ++示例解释的排序算法

    java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...

  3. 做Java头发少_这35个Java代码优化细节,你用了吗

    链接:https://www.jianshu.com/p/6e472304b5ac 前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有 ...

  4. java arraylist 初始化_一不小心就让Java开发踩坑的fail-fast是个什么鬼?

    什么是fail-fast 首先我们看下维基百科中关于fail-fast的解释: In systems design, a fail-fast system is one which immediate ...

  5. 疯狂讲义java 李刚_推荐:疯狂java讲义--李刚著作(4)

    >Java资料百度网盘 链接:https://pan.baidu.com/s/1IzjeTfM2SE5Ts9kRvS3huw 提取码:7wg9 >今日内容: >1.流程控制 > ...

  6. java 判断类型_如何快速入门Java编程学习(干货)

    一.初识Java 1.生活中的程序: 从起床到教室上课的过程 穿衣打扮>起床>洗漱>出宿舍>>吃早餐>到教室 按照特定的顺序去完成某一件事的过程我们叫做生活中的程序 ...

  7. 支持java虚拟主机_为何缺乏支持Java的虚拟主机

    现在很多站长们,都青睐于香港虚拟主机建站.现在常见的是asp和PHP的程序空间很多,但是Java的少之又少,下面小编我给大家聊一聊! 一.香港Java虚拟主机成本高 使用Java程序建站,就必须要用支 ...

  8. java必读书籍_最佳5本Java性能调优书籍–精选,必读

    java必读书籍 为什么Java开发人员应该阅读有关性能调优的书? 当我很久以前第一次面对这个问题时,我以为以后会做,但是我很长一段时间都没有回过头来. 仅当我在用Java编写的任务关键型服务器端财务 ...

  9. java线程堆栈_深入JVM剖析Java的线程堆栈

    在这篇文章里我将教会你如何分析JVM的线程堆栈以及如何从堆栈信息中找出问题的根因.在我看来线程堆栈分析技术是Java EE产品支持工程师所必须掌握的一门技术.在线程堆栈中存储的信息,通常远超出你的想象 ...

  10. java 深拷贝 流_(转)Java技巧:深拷贝的两种方式

    ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. ⑵深复制(深克隆) 被复制 ...

最新文章

  1. android插件式换肤,Android学习之插件化换肤
  2. 杠杆原理的形象演示,你都懂了吗?
  3. 创业动力衰减 中国面临危险挑战
  4. 长春分享网站服务器迁移,网站迁移公告
  5. 【Elasticsearch】如何在Elasticsearch中查找相似的术语
  6. php中global什么意思,php中global和$GLOBALS[]的用法、解释、区别
  7. 如何理解5G空口(NR)?
  8. 金融学python还是c语言_金融矿工(Quant)必须会写哪些编程语言?Python和C++就够了吗?...
  9. otn系统中常用的电层_夏季温室大棚生产中常用的降温系统
  10. 永远不要因为这个工作不好而辞职、、、、
  11. 鸟哥的Linux私房菜-合集
  12. 石油化工设备维护检修规程_【干货】罗茨鼓风机维护检修规程
  13. 019 [工具软件]窗体置顶 DeskPins
  14. 系统计算机怎么恢复出厂设置,电脑怎么恢复出厂设置 电脑恢复出厂设置的方法 - 云骑士一键重装系统...
  15. h2o flow初探
  16. SQL 压力测试实战
  17. 常见多变量/多元统计分析方法分类图
  18. 解决binwalk提取需要权限问题,binwalk提取文件报错。
  19. 模糊查询like 如何查找 包含% 或者_的行
  20. EC-PCA: 利润中心出具报表编制流程 - KE5Z / S_ALR_87013326

热门文章

  1. unity3d UGUI视频教程
  2. 15M安装包就能玩《原神》,带你了解云游戏背后的技术秘密
  3. 内含干货PPT下载|一站式数据管理DMS及最新解决方案发布
  4. 友盟+《小程序用户增长白皮书》:从五个角度入手分析小程序数据
  5. 阿里云助力浙江大学信息化建设,以实时数据驱动校园智能管理
  6. 【机器学习】脑机接口利器:错误率仅3%
  7. 投稿指南 | 云计算领域最前沿资讯、技术,期待您的专业解读!
  8. Mendix将升级低代码软件开发平台,发布全新数字化生态系统、行业云
  9. 金蝶云拿下客户满意度第一,中国SaaS企业觅得“后发先至”良机
  10. VMware vSphere 6.0 虚拟机运维常见问题排除