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

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认同)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zTree笔记,设置无法勾选父节点(禁用父节点)和父节点禁用时回显选中子节点时关联父节点状态

名称链接zTree APIhttp://www.treejs.cn/v3/api.phpzTree Demohttp://www.treejs.cn/v3/demo.php#_101 最近又用到了zTree&#xff0c;虽然zTree的APi已经很全很方便很易懂了&#xff0c;但是难免有的方法找不到。为了方便他人方便自己&#xff0c;做下笔记记录下 zTree笔记1 …

你需要知道的那些 redis 数据结构(前篇)

戳蓝字“CSDN云计算”关注我们哦&#xff01; 作者 | 饿了么物流技术团队来源 | CSDN 企业博客redis 对于团队中的同学们来说是非常熟悉的存在了&#xff0c;我们常用它来做缓存、或是实现分布式锁等等。对于其 api 中提供的几种数据结构&#xff0c;大家也使用得得心应手。api…

Tensorflow快餐教程(6) - 矩阵分解

摘要&#xff1a; 特征分解&#xff0c;奇异值分解&#xff0c;Moore-Penrose广义逆矩阵分解特征向量和特征值我们在《线性代数》课学过方阵的特征向量和特征值。定义&#xff1a;设A∈FnnA∈Fnn是n阶方阵。如果存在非零向量X∈Fn1X∈Fn1使AXλXAXλX对某个常数λ∈Fλ∈F成立&…

ZTree的全选 反选 全不选 取消 清空

全选 //全选$(#c_all).on(click,function (e) {var zTree $.fn.zTree.getZTreeObj("treeMenu");//得到tree对象 treeMenu是我的treeidvar node zTree.getNodes();//得到全部节点var nodes zTree.transformToArray(node);//全部节点转换成数组arrayvar checkNode …

对数周期天线hfss建模_HFSS也有金手指,FADDM招式详解

FADDM(Finite Array Domain Decomposition Method)即有限大阵区域分解法是HFSS针对周期阵列天线的一种高效仿真方法,这种方法不仅能提升天线阵列建模和求解的效率&#xff0c;还能保证仿真结果的精准度。FADDM的优势同样的硬件可求解更大规模的阵列与在HFSS全模型求解具有同样精…

Tensorflow快餐教程(7) - 梯度下降

摘要&#xff1a; 梯度下降梯度下降学习完基础知识和矩阵运算之后&#xff0c;我们再回头看下第一节讲的线性回归的代码&#xff1a;import tensorflow as tf import numpy as nptrX np.linspace(-1, 1, 101) trY 2 * trX np.random.randn(*trX.shape) * 0.33 # 创建一些线性…

php网页执行流程,PHP程序的执行流程

PHP程序的执行流程为了以后能开发PHP扩展&#xff0c;就一定要了解PHP的执行顺序。这篇文章就是为C开发PHP扩展做铺垫。Web环境我们假设为Apache。在编译PHP的时候,为了能够让Apache支持PHP&#xff0c;我们会生成一个mod_php5.so的模块。Apache加载这个模块&#xff0c;在url访…

腾讯物联网操作系统正式开源,最小体积仅1.8 KB

9月18日&#xff0c;腾讯宣布将开源自主研发的轻量级物联网实时操作系统TencentOS tiny。相比市场上其它系统&#xff0c;腾讯TencentOS tiny在资源占用、设备成本、功耗管理以及安全稳定等层面极具竞争力。该系统的开源可大幅降低物联网应用开发成本&#xff0c;提升开发效率&…

云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍

摘要&#xff1a; 本文带大家简单理解阿里巴巴Java开发手册中的规约内容以及P3C项目&#xff0c;可以帮助开发者扫描出所有潜在的代码隐患。在中间也聊了一些对于不同语言设计的理解&#xff0c;如何去看待语言的设计&#xff0c;其实是我们去学习一个语言的核心。演讲嘉宾简介…

你的数据安全么?Hadoop再曝安全漏洞| 黑客利用Hadoop Yarn资源管理系统未授权访问漏洞进行攻击

摘要&#xff1a; 4月30日&#xff0c;阿里云发现&#xff0c;俄罗斯黑客利用Hadoop Yarn资源管理系统REST API未授权访问漏洞进行攻击。 Hadoop是一款由Apache基金会推出的分布式系统框架&#xff0c;它通过著名的 MapReduce 算法进行分布式处理&#xff0c;Yarn是Hadoop集群的…

linux建立软连接

格式命令ln -s 源文件的绝对路径 目标文件的绝对路径ln -s /opt/libreoffice6.3/program/soffice /usr/bin/soffice需求把soffice 和/usr/bin/soffice 建立软连接现在执行命令/opt/libreoffice6.3/program/soffice --headless --invisible --convert-to pdf 3.19m.doc建立软连接…

博文强识|进阶企业大咖

出品 | CSDN云计算 每个周三周五&#xff0c;和小编共同分享优秀博文&#xff0c;一起遨游在知识的海洋。 你需要知道的那些 redis 数据结构&#xff08;前篇&#xff09; redis 对于团队中的同学们来说是非常熟悉的存在了&#xff0c;我们常用它来做缓存、或是实现分布式锁等…

php 类似微信下拉菜单,微信小程序模拟下拉菜单开发实例

本文主要和大家分享微信小程序模拟下拉菜单开发实例&#xff0c;希望能帮助到大家。一.知识点1.实现动态显示和隐藏某个控件列表1data:{open:false},showitem:function(){this.setData({open:!this.data.open})},.display_show{display: block;}.display_none{display: none;}2…

算法导论 pdf_学习数据结构和算法最好的书是什么?

-----------通知&#xff1a;如果本站对你学习算法有帮助&#xff0c;请收藏网址&#xff0c;并推荐给你的朋友。由于 labuladong 的算法套路太火&#xff0c;很多人直接拿我的 GitHub 文章去开付费专栏&#xff0c;价格还不便宜。我这免费写给你看&#xff0c;多宣传原创作者是…

Tensorflow快餐教程(8) - 深度学习简史

摘要&#xff1a; 深度学习简史深度学习简史从机器学习流派说起如果要给机器学习划分流派的话&#xff0c;初步划分可以分为『归纳学习』和『统计学习』两大类。所谓『归纳学习』&#xff0c;就跟我们平时学习所用的归纳法差不多&#xff0c;也叫『从样例中学习』。归纳学习又分…

usb设备驱动程序(一)

代码&#xff1a; #include <linux/atomic.h> #include <linux/kernel.h> #include <linux/list.h> #include <linux/module.h> #include <linux/slab.h> #include <linux/usb.h> #include <linux/videodev2.h> #include <linux…

linux 动态传参执行shell脚本

举个栗子&#xff1a; 我想执行的命令如下 /usr/bin/soffice --headless --invisible --convert-to pdf 3.doc但是这样命令就写死了&#xff0c;如何动态传参数&#xff0c;执行shell脚本呢&#xff1f; 步骤释义说明执行命令①创建一个2.sh的文件vim 2.sh②把通用的命令复制…

Tensorflow快餐教程(9) - 卷积

摘要&#xff1a; 卷积的计算方法卷积卷积就是滑动中提取特征的过程在数学中&#xff0c;卷积convolution是一种函数的定义。它是通过两个函数f和g生成第三个函数的一种数学算子&#xff0c;表征函数f与g经过翻转和平移的重叠部分的面积。其定义为&#xff1a;h(x)f(x)∗g(x)∫…

php websocket 连接已断开连接,客户端websocket 无法连接上PHP socket问题

我客户端是用c写得websocket客户端我请求的地址是ws://127.0.0.1:100322 (我请求ws://echo.websocket.org这个是可以的说明客户端代码是没问题的 问题就在服务端)输出[1405476678:7805] NOTICE: Initial logging level 7[1405476678:7806] NOTICE: Library version: 1.3 1544a2…

商家笑了 设计师哭了,京东+英特尔的AI这招太绝

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 刘丹出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;在如今“无促销不电商”的大环境熏陶下&#xff0c;商家需要榨干了脑浆想尽各种奇招&#xff0c;玩法虽多&#xff0c;但万变不离其宗。面对上万、甚至…