java并行处理集合_java8 集合并行流处理

private ListgetListPerson() {

List strList = new ArrayList();for (int i = 0; i < 1000; i++) {

strList.add(new Person("aa" +i, i));

}returnstrList;

}/*** 有返回 的接口

* 将List -> List*/@Testpublic voidmapTest() {

Instant start=Instant.now();

List listPerson =getListPerson();//根据源码,第一个为参数类型,第二个为返回对象类型

Function mapper = p ->{//do something

try{

Thread.sleep(2);

}catch(Exception e) {

e.printStackTrace();

}

Student stu= newStudent(p.getName(), p.getAge());returnstu;

};

List rs =listPerson.parallelStream().map(mapper).collect(Collectors.toList());

System.out.println(rs.size());

Instant end=Instant.now();

System.out.println("耗时为:" +Duration.between(start, end).toMillis());

}/**普通写法,,当大量数据操作时,才能体现性能更高

* 也就是 do something 耗时比较长

*@throwsInterruptedException*/@Testpublic void change() throwsInterruptedException {

Instant start=Instant.now();

List listPerson =getListPerson();

List rs = new ArrayList<>(listPerson.size());for(Person person : listPerson) {//do something

Thread.sleep(2);

rs.add(newStudent(person.getName(), person.getAge()));

}

System.out.println(rs.size());

Instant end=Instant.now();

System.out.println("耗时为:" +Duration.between(start, end).toMillis());

}/*** 无需返回

* 将List 中的人名都加上 sir 串*/@Testpublic voidpeekTest() {

Instant start=Instant.now();

List listPerson =getListPerson();

Consumer action = p->{

p.setName(p.getName()+ "sir");

};

listPerson.parallelStream().peek(action).count();

System.out.println(listPerson);

Instant end=Instant.now();

System.out.println("耗时为:" +Duration.between(start, end).toMillis());

}public classPerson{privateString name;private intage;public Person(String name, intage) {this.name=name;this.age=age;

}publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}public intgetAge() {returnage;

}public void setAge(intage) {this.age =age;

}

@OverridepublicString toString() {return this.name;

}

}public classStudent{privateString name;private intage;public Student(String name, intage) {this.name=name;this.age=age;

}publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}public intgetAge() {returnage;

}public void setAge(intage) {this.age =age;

}

@OverridepublicString toString() {return this.name;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值