java - Stream.map()方法是保持原有顺序么?还是会重新排序呢?
PHP中文网
PHP中文网 2017-04-18 10:10:56
0
3
1396
PHP中文网
PHP中文网

认证0级讲师

全部回复(3)
PHPzhong

您好,非并发流情况下,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();
左手右手慢动作

map 映射,这个跟排序没有任何关系。

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");

list.stream().map((Function<String, Object>) s -> s + "1").forEach(System.out::println);
// output:
// A1
// B1
Ty80

parallelStream不保证顺序,streamp保证顺序

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板