java - Stream.map()方法是保持原有顺序么?还是会重新排序呢?
本文介绍了java - Stream.map()方法是保持原有顺序么?还是会重新排序呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
在jdk 8中引入了Stream类,其中有map方法,请问map方法是否能够保持原有list的顺序,还是会对list进行重排序??
最好能有源码说明。。
解决方案
您好,非并发流情况下,stream的map方法的处理顺序依赖于流的当前处理上游集合的顺序,ArrayList的顺序默认为自然顺序(插入顺序),因此ArrayList集合转为的流的map方法能够以自然顺序处理集合元素。
// 输出c b a
List<String> a = new LinkedList<String>();
a.add("c");
a.add("b");
a.add("a");
a.stream().map(x -> {
System.out.println(x);
return x;
}).count();
Map<String,String> m = new HashMap<String,String>();
m.put("4","D");
m.put("2","B");
m.put("1","A");
m.put("3","C");
// m.values() 默认顺序为A B C D
// 因此stream map的处理顺序也是 A B C D
m.values().stream().map(x -> {
System.out.println(x);
return x;
}).count();
这篇关于java - Stream.map()方法是保持原有顺序么?还是会重新排序呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文