Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
dad0c095
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
dad0c095
编写于
8月 09, 2013
作者:
H
henryjen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8023681: Fix raw type warning caused by Sink
Reviewed-by: mduigou, briangoetz
上级
7f860593
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
101 addition
and
111 deletion
+101
-111
src/share/classes/java/util/stream/Collectors.java
src/share/classes/java/util/stream/Collectors.java
+19
-21
src/share/classes/java/util/stream/DistinctOps.java
src/share/classes/java/util/stream/DistinctOps.java
+2
-2
src/share/classes/java/util/stream/DoublePipeline.java
src/share/classes/java/util/stream/DoublePipeline.java
+7
-8
src/share/classes/java/util/stream/IntPipeline.java
src/share/classes/java/util/stream/IntPipeline.java
+9
-12
src/share/classes/java/util/stream/LongPipeline.java
src/share/classes/java/util/stream/LongPipeline.java
+8
-11
src/share/classes/java/util/stream/ReferencePipeline.java
src/share/classes/java/util/stream/ReferencePipeline.java
+12
-14
src/share/classes/java/util/stream/Sink.java
src/share/classes/java/util/stream/Sink.java
+12
-16
src/share/classes/java/util/stream/SliceOps.java
src/share/classes/java/util/stream/SliceOps.java
+15
-10
src/share/classes/java/util/stream/SortedOps.java
src/share/classes/java/util/stream/SortedOps.java
+17
-17
未找到文件。
src/share/classes/java/util/stream/Collectors.java
浏览文件 @
dad0c095
...
...
@@ -137,6 +137,11 @@ public final class Collectors {
return
(
u
,
v
)
->
{
throw
new
IllegalStateException
(
String
.
format
(
"Duplicate key %s"
,
u
));
};
}
@SuppressWarnings
(
"unchecked"
)
private
static
<
I
,
R
>
Function
<
I
,
R
>
castingIdentity
()
{
return
i
->
(
R
)
i
;
}
/**
* Simple implementation class for {@code Collector}.
*
...
...
@@ -166,7 +171,7 @@ public final class Collectors {
BiConsumer
<
A
,
T
>
accumulator
,
BinaryOperator
<
A
>
combiner
,
Set
<
Characteristics
>
characteristics
)
{
this
(
supplier
,
accumulator
,
combiner
,
i
->
(
R
)
i
,
characteristics
);
this
(
supplier
,
accumulator
,
combiner
,
castingIdentity
()
,
characteristics
);
}
@Override
...
...
@@ -209,7 +214,7 @@ public final class Collectors {
*/
public
static
<
T
,
C
extends
Collection
<
T
>>
Collector
<
T
,
?,
C
>
toCollection
(
Supplier
<
C
>
collectionFactory
)
{
return
new
CollectorImpl
<>(
collectionFactory
,
Collection:
:
add
,
return
new
CollectorImpl
<>(
collectionFactory
,
Collection
<
T
>
::
add
,
(
r1
,
r2
)
->
{
r1
.
addAll
(
r2
);
return
r1
;
},
CH_ID
);
}
...
...
@@ -1046,30 +1051,23 @@ public final class Collectors {
public
static
<
T
,
D
,
A
>
Collector
<
T
,
?,
Map
<
Boolean
,
D
>>
partitioningBy
(
Predicate
<?
super
T
>
predicate
,
Collector
<?
super
T
,
A
,
D
>
downstream
)
{
@SuppressWarnings
(
"unchecked"
)
BiConsumer
<
D
,
?
super
T
>
downstreamAccumulator
=
(
BiConsumer
<
D
,
?
super
T
>)
downstream
.
accumulator
();
BiConsumer
<
Map
<
Boolean
,
A
>,
T
>
accumulator
=
(
result
,
t
)
->
{
Partition
<
D
>
asPartition
=
((
Partition
<
D
>)
result
);
downstreamAccumulator
.
accept
(
predicate
.
test
(
t
)
?
asPartition
.
forTrue
:
asPartition
.
forFalse
,
t
);
};
BiConsumer
<
A
,
?
super
T
>
downstreamAccumulator
=
downstream
.
accumulator
();
BiConsumer
<
Partition
<
A
>,
T
>
accumulator
=
(
result
,
t
)
->
downstreamAccumulator
.
accept
(
predicate
.
test
(
t
)
?
result
.
forTrue
:
result
.
forFalse
,
t
);
BinaryOperator
<
A
>
op
=
downstream
.
combiner
();
BinaryOperator
<
Map
<
Boolean
,
A
>>
merger
=
(
m1
,
m2
)
->
{
Partition
<
A
>
left
=
(
Partition
<
A
>)
m1
;
Partition
<
A
>
right
=
(
Partition
<
A
>)
m2
;
return
new
Partition
<>(
op
.
apply
(
left
.
forTrue
,
right
.
forTrue
),
op
.
apply
(
left
.
forFalse
,
right
.
forFalse
));
};
Supplier
<
Map
<
Boolean
,
A
>>
supplier
=
()
->
new
Partition
<>(
downstream
.
supplier
().
get
(),
downstream
.
supplier
().
get
());
BinaryOperator
<
Partition
<
A
>>
merger
=
(
left
,
right
)
->
new
Partition
<>(
op
.
apply
(
left
.
forTrue
,
right
.
forTrue
),
op
.
apply
(
left
.
forFalse
,
right
.
forFalse
));
Supplier
<
Partition
<
A
>>
supplier
=
()
->
new
Partition
<>(
downstream
.
supplier
().
get
(),
downstream
.
supplier
().
get
());
if
(
downstream
.
characteristics
().
contains
(
Collector
.
Characteristics
.
IDENTITY_FINISH
))
{
return
new
CollectorImpl
<>(
supplier
,
accumulator
,
merger
,
CH_ID
);
}
else
{
Function
<
Map
<
Boolean
,
A
>,
Map
<
Boolean
,
D
>>
finisher
=
(
Map
<
Boolean
,
A
>
par
)
->
{
Partition
<
A
>
asAPartition
=
(
Partition
<
A
>)
par
;
return
new
Partition
<>(
downstream
.
finisher
().
apply
(
asAPartition
.
forTrue
),
downstream
.
finisher
().
apply
(
asAPartition
.
forFalse
));
};
Function
<
Partition
<
A
>,
Map
<
Boolean
,
D
>>
finisher
=
par
->
new
Partition
<>(
downstream
.
finisher
().
apply
(
par
.
forTrue
),
downstream
.
finisher
().
apply
(
par
.
forFalse
));
return
new
CollectorImpl
<>(
supplier
,
accumulator
,
merger
,
finisher
,
CH_NOID
);
}
}
...
...
src/share/classes/java/util/stream/DistinctOps.java
浏览文件 @
dad0c095
...
...
@@ -101,7 +101,7 @@ final class DistinctOps {
if
(
StreamOpFlag
.
DISTINCT
.
isKnown
(
flags
))
{
return
sink
;
}
else
if
(
StreamOpFlag
.
SORTED
.
isKnown
(
flags
))
{
return
new
Sink
.
ChainedReference
<
T
>(
sink
)
{
return
new
Sink
.
ChainedReference
<
T
,
T
>(
sink
)
{
boolean
seenNull
;
T
lastSeen
;
...
...
@@ -132,7 +132,7 @@ final class DistinctOps {
}
};
}
else
{
return
new
Sink
.
ChainedReference
<
T
>(
sink
)
{
return
new
Sink
.
ChainedReference
<
T
,
T
>(
sink
)
{
Set
<
T
>
seen
;
@Override
...
...
src/share/classes/java/util/stream/DoublePipeline.java
浏览文件 @
dad0c095
...
...
@@ -191,7 +191,7 @@ abstract class DoublePipeline<E_IN>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
)
{
@Override
Sink
<
Double
>
opWrapSink
(
int
flags
,
Sink
<
Double
>
sink
)
{
return
new
Sink
.
ChainedDouble
(
sink
)
{
return
new
Sink
.
ChainedDouble
<
Double
>
(
sink
)
{
@Override
public
void
accept
(
double
t
)
{
downstream
.
accept
(
mapper
.
applyAsDouble
(
t
));
...
...
@@ -208,9 +208,8 @@ abstract class DoublePipeline<E_IN>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
)
{
@Override
Sink
<
Double
>
opWrapSink
(
int
flags
,
Sink
<
U
>
sink
)
{
return
new
Sink
.
ChainedDouble
(
sink
)
{
return
new
Sink
.
ChainedDouble
<
U
>
(
sink
)
{
@Override
@SuppressWarnings
(
"unchecked"
)
public
void
accept
(
double
t
)
{
downstream
.
accept
(
mapper
.
apply
(
t
));
}
...
...
@@ -226,7 +225,7 @@ abstract class DoublePipeline<E_IN>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
)
{
@Override
Sink
<
Double
>
opWrapSink
(
int
flags
,
Sink
<
Integer
>
sink
)
{
return
new
Sink
.
ChainedDouble
(
sink
)
{
return
new
Sink
.
ChainedDouble
<
Integer
>
(
sink
)
{
@Override
public
void
accept
(
double
t
)
{
downstream
.
accept
(
mapper
.
applyAsInt
(
t
));
...
...
@@ -243,7 +242,7 @@ abstract class DoublePipeline<E_IN>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
)
{
@Override
Sink
<
Double
>
opWrapSink
(
int
flags
,
Sink
<
Long
>
sink
)
{
return
new
Sink
.
ChainedDouble
(
sink
)
{
return
new
Sink
.
ChainedDouble
<
Long
>
(
sink
)
{
@Override
public
void
accept
(
double
t
)
{
downstream
.
accept
(
mapper
.
applyAsLong
(
t
));
...
...
@@ -259,7 +258,7 @@ abstract class DoublePipeline<E_IN>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
|
StreamOpFlag
.
NOT_SIZED
)
{
@Override
Sink
<
Double
>
opWrapSink
(
int
flags
,
Sink
<
Double
>
sink
)
{
return
new
Sink
.
ChainedDouble
(
sink
)
{
return
new
Sink
.
ChainedDouble
<
Double
>
(
sink
)
{
@Override
public
void
begin
(
long
size
)
{
downstream
.
begin
(-
1
);
...
...
@@ -296,7 +295,7 @@ abstract class DoublePipeline<E_IN>
StreamOpFlag
.
NOT_SIZED
)
{
@Override
Sink
<
Double
>
opWrapSink
(
int
flags
,
Sink
<
Double
>
sink
)
{
return
new
Sink
.
ChainedDouble
(
sink
)
{
return
new
Sink
.
ChainedDouble
<
Double
>
(
sink
)
{
@Override
public
void
begin
(
long
size
)
{
downstream
.
begin
(-
1
);
...
...
@@ -319,7 +318,7 @@ abstract class DoublePipeline<E_IN>
0
)
{
@Override
Sink
<
Double
>
opWrapSink
(
int
flags
,
Sink
<
Double
>
sink
)
{
return
new
Sink
.
ChainedDouble
(
sink
)
{
return
new
Sink
.
ChainedDouble
<
Double
>
(
sink
)
{
@Override
public
void
accept
(
double
t
)
{
consumer
.
accept
(
t
);
...
...
src/share/classes/java/util/stream/IntPipeline.java
浏览文件 @
dad0c095
...
...
@@ -189,9 +189,8 @@ abstract class IntPipeline<E_IN>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
)
{
@Override
Sink
<
Integer
>
opWrapSink
(
int
flags
,
Sink
<
Long
>
sink
)
{
return
new
Sink
.
ChainedInt
(
sink
)
{
return
new
Sink
.
ChainedInt
<
Long
>
(
sink
)
{
@Override
@SuppressWarnings
(
"unchecked"
)
public
void
accept
(
int
t
)
{
downstream
.
accept
((
long
)
t
);
}
...
...
@@ -206,9 +205,8 @@ abstract class IntPipeline<E_IN>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
)
{
@Override
Sink
<
Integer
>
opWrapSink
(
int
flags
,
Sink
<
Double
>
sink
)
{
return
new
Sink
.
ChainedInt
(
sink
)
{
return
new
Sink
.
ChainedInt
<
Double
>
(
sink
)
{
@Override
@SuppressWarnings
(
"unchecked"
)
public
void
accept
(
int
t
)
{
downstream
.
accept
((
double
)
t
);
}
...
...
@@ -229,7 +227,7 @@ abstract class IntPipeline<E_IN>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
)
{
@Override
Sink
<
Integer
>
opWrapSink
(
int
flags
,
Sink
<
Integer
>
sink
)
{
return
new
Sink
.
ChainedInt
(
sink
)
{
return
new
Sink
.
ChainedInt
<
Integer
>
(
sink
)
{
@Override
public
void
accept
(
int
t
)
{
downstream
.
accept
(
mapper
.
applyAsInt
(
t
));
...
...
@@ -246,9 +244,8 @@ abstract class IntPipeline<E_IN>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
)
{
@Override
Sink
<
Integer
>
opWrapSink
(
int
flags
,
Sink
<
U
>
sink
)
{
return
new
Sink
.
ChainedInt
(
sink
)
{
return
new
Sink
.
ChainedInt
<
U
>
(
sink
)
{
@Override
@SuppressWarnings
(
"unchecked"
)
public
void
accept
(
int
t
)
{
downstream
.
accept
(
mapper
.
apply
(
t
));
}
...
...
@@ -264,7 +261,7 @@ abstract class IntPipeline<E_IN>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
)
{
@Override
Sink
<
Integer
>
opWrapSink
(
int
flags
,
Sink
<
Long
>
sink
)
{
return
new
Sink
.
ChainedInt
(
sink
)
{
return
new
Sink
.
ChainedInt
<
Long
>
(
sink
)
{
@Override
public
void
accept
(
int
t
)
{
downstream
.
accept
(
mapper
.
applyAsLong
(
t
));
...
...
@@ -281,7 +278,7 @@ abstract class IntPipeline<E_IN>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
)
{
@Override
Sink
<
Integer
>
opWrapSink
(
int
flags
,
Sink
<
Double
>
sink
)
{
return
new
Sink
.
ChainedInt
(
sink
)
{
return
new
Sink
.
ChainedInt
<
Double
>
(
sink
)
{
@Override
public
void
accept
(
int
t
)
{
downstream
.
accept
(
mapper
.
applyAsDouble
(
t
));
...
...
@@ -297,7 +294,7 @@ abstract class IntPipeline<E_IN>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
|
StreamOpFlag
.
NOT_SIZED
)
{
@Override
Sink
<
Integer
>
opWrapSink
(
int
flags
,
Sink
<
Integer
>
sink
)
{
return
new
Sink
.
ChainedInt
(
sink
)
{
return
new
Sink
.
ChainedInt
<
Integer
>
(
sink
)
{
@Override
public
void
begin
(
long
size
)
{
downstream
.
begin
(-
1
);
...
...
@@ -334,7 +331,7 @@ abstract class IntPipeline<E_IN>
StreamOpFlag
.
NOT_SIZED
)
{
@Override
Sink
<
Integer
>
opWrapSink
(
int
flags
,
Sink
<
Integer
>
sink
)
{
return
new
Sink
.
ChainedInt
(
sink
)
{
return
new
Sink
.
ChainedInt
<
Integer
>
(
sink
)
{
@Override
public
void
begin
(
long
size
)
{
downstream
.
begin
(-
1
);
...
...
@@ -357,7 +354,7 @@ abstract class IntPipeline<E_IN>
0
)
{
@Override
Sink
<
Integer
>
opWrapSink
(
int
flags
,
Sink
<
Integer
>
sink
)
{
return
new
Sink
.
ChainedInt
(
sink
)
{
return
new
Sink
.
ChainedInt
<
Integer
>
(
sink
)
{
@Override
public
void
accept
(
int
t
)
{
consumer
.
accept
(
t
);
...
...
src/share/classes/java/util/stream/LongPipeline.java
浏览文件 @
dad0c095
...
...
@@ -186,7 +186,7 @@ abstract class LongPipeline<E_IN>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
)
{
@Override
Sink
<
Long
>
opWrapSink
(
int
flags
,
Sink
<
Double
>
sink
)
{
return
new
Sink
.
ChainedLong
(
sink
)
{
return
new
Sink
.
ChainedLong
<
Double
>
(
sink
)
{
@Override
public
void
accept
(
long
t
)
{
downstream
.
accept
((
double
)
t
);
...
...
@@ -208,9 +208,8 @@ abstract class LongPipeline<E_IN>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
)
{
@Override
Sink
<
Long
>
opWrapSink
(
int
flags
,
Sink
<
Long
>
sink
)
{
return
new
Sink
.
ChainedLong
(
sink
)
{
return
new
Sink
.
ChainedLong
<
Long
>
(
sink
)
{
@Override
@SuppressWarnings
(
"unchecked"
)
public
void
accept
(
long
t
)
{
downstream
.
accept
(
mapper
.
applyAsLong
(
t
));
}
...
...
@@ -226,9 +225,8 @@ abstract class LongPipeline<E_IN>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
)
{
@Override
Sink
<
Long
>
opWrapSink
(
int
flags
,
Sink
<
U
>
sink
)
{
return
new
Sink
.
ChainedLong
(
sink
)
{
return
new
Sink
.
ChainedLong
<
U
>
(
sink
)
{
@Override
@SuppressWarnings
(
"unchecked"
)
public
void
accept
(
long
t
)
{
downstream
.
accept
(
mapper
.
apply
(
t
));
}
...
...
@@ -244,9 +242,8 @@ abstract class LongPipeline<E_IN>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
)
{
@Override
Sink
<
Long
>
opWrapSink
(
int
flags
,
Sink
<
Integer
>
sink
)
{
return
new
Sink
.
ChainedLong
(
sink
)
{
return
new
Sink
.
ChainedLong
<
Integer
>
(
sink
)
{
@Override
@SuppressWarnings
(
"unchecked"
)
public
void
accept
(
long
t
)
{
downstream
.
accept
(
mapper
.
applyAsInt
(
t
));
}
...
...
@@ -262,7 +259,7 @@ abstract class LongPipeline<E_IN>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
)
{
@Override
Sink
<
Long
>
opWrapSink
(
int
flags
,
Sink
<
Double
>
sink
)
{
return
new
Sink
.
ChainedLong
(
sink
)
{
return
new
Sink
.
ChainedLong
<
Double
>
(
sink
)
{
@Override
public
void
accept
(
long
t
)
{
downstream
.
accept
(
mapper
.
applyAsDouble
(
t
));
...
...
@@ -278,7 +275,7 @@ abstract class LongPipeline<E_IN>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
|
StreamOpFlag
.
NOT_SIZED
)
{
@Override
Sink
<
Long
>
opWrapSink
(
int
flags
,
Sink
<
Long
>
sink
)
{
return
new
Sink
.
ChainedLong
(
sink
)
{
return
new
Sink
.
ChainedLong
<
Long
>
(
sink
)
{
@Override
public
void
begin
(
long
size
)
{
downstream
.
begin
(-
1
);
...
...
@@ -315,7 +312,7 @@ abstract class LongPipeline<E_IN>
StreamOpFlag
.
NOT_SIZED
)
{
@Override
Sink
<
Long
>
opWrapSink
(
int
flags
,
Sink
<
Long
>
sink
)
{
return
new
Sink
.
ChainedLong
(
sink
)
{
return
new
Sink
.
ChainedLong
<
Long
>
(
sink
)
{
@Override
public
void
begin
(
long
size
)
{
downstream
.
begin
(-
1
);
...
...
@@ -338,7 +335,7 @@ abstract class LongPipeline<E_IN>
0
)
{
@Override
Sink
<
Long
>
opWrapSink
(
int
flags
,
Sink
<
Long
>
sink
)
{
return
new
Sink
.
ChainedLong
(
sink
)
{
return
new
Sink
.
ChainedLong
<
Long
>
(
sink
)
{
@Override
public
void
accept
(
long
t
)
{
consumer
.
accept
(
t
);
...
...
src/share/classes/java/util/stream/ReferencePipeline.java
浏览文件 @
dad0c095
...
...
@@ -163,17 +163,16 @@ abstract class ReferencePipeline<P_IN, P_OUT>
StreamOpFlag
.
NOT_SIZED
)
{
@Override
Sink
<
P_OUT
>
opWrapSink
(
int
flags
,
Sink
<
P_OUT
>
sink
)
{
return
new
Sink
.
ChainedReference
<
P_OUT
>(
sink
)
{
return
new
Sink
.
ChainedReference
<
P_OUT
,
P_OUT
>(
sink
)
{
@Override
public
void
begin
(
long
size
)
{
downstream
.
begin
(-
1
);
}
@Override
@SuppressWarnings
(
"unchecked"
)
public
void
accept
(
P_OUT
u
)
{
if
(
predicate
.
test
(
u
))
downstream
.
accept
(
(
Object
)
u
);
downstream
.
accept
(
u
);
}
};
}
...
...
@@ -188,7 +187,7 @@ abstract class ReferencePipeline<P_IN, P_OUT>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
)
{
@Override
Sink
<
P_OUT
>
opWrapSink
(
int
flags
,
Sink
<
R
>
sink
)
{
return
new
Sink
.
ChainedReference
<
P_OUT
>(
sink
)
{
return
new
Sink
.
ChainedReference
<
P_OUT
,
R
>(
sink
)
{
@Override
public
void
accept
(
P_OUT
u
)
{
downstream
.
accept
(
mapper
.
apply
(
u
));
...
...
@@ -205,7 +204,7 @@ abstract class ReferencePipeline<P_IN, P_OUT>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
)
{
@Override
Sink
<
P_OUT
>
opWrapSink
(
int
flags
,
Sink
<
Integer
>
sink
)
{
return
new
Sink
.
ChainedReference
<
P_OUT
>(
sink
)
{
return
new
Sink
.
ChainedReference
<
P_OUT
,
Integer
>(
sink
)
{
@Override
public
void
accept
(
P_OUT
u
)
{
downstream
.
accept
(
mapper
.
applyAsInt
(
u
));
...
...
@@ -222,7 +221,7 @@ abstract class ReferencePipeline<P_IN, P_OUT>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
)
{
@Override
Sink
<
P_OUT
>
opWrapSink
(
int
flags
,
Sink
<
Long
>
sink
)
{
return
new
Sink
.
ChainedReference
<
P_OUT
>(
sink
)
{
return
new
Sink
.
ChainedReference
<
P_OUT
,
Long
>(
sink
)
{
@Override
public
void
accept
(
P_OUT
u
)
{
downstream
.
accept
(
mapper
.
applyAsLong
(
u
));
...
...
@@ -239,7 +238,7 @@ abstract class ReferencePipeline<P_IN, P_OUT>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
)
{
@Override
Sink
<
P_OUT
>
opWrapSink
(
int
flags
,
Sink
<
Double
>
sink
)
{
return
new
Sink
.
ChainedReference
<
P_OUT
>(
sink
)
{
return
new
Sink
.
ChainedReference
<
P_OUT
,
Double
>(
sink
)
{
@Override
public
void
accept
(
P_OUT
u
)
{
downstream
.
accept
(
mapper
.
applyAsDouble
(
u
));
...
...
@@ -257,14 +256,13 @@ abstract class ReferencePipeline<P_IN, P_OUT>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
|
StreamOpFlag
.
NOT_SIZED
)
{
@Override
Sink
<
P_OUT
>
opWrapSink
(
int
flags
,
Sink
<
R
>
sink
)
{
return
new
Sink
.
ChainedReference
<
P_OUT
>(
sink
)
{
return
new
Sink
.
ChainedReference
<
P_OUT
,
R
>(
sink
)
{
@Override
public
void
begin
(
long
size
)
{
downstream
.
begin
(-
1
);
}
@Override
@SuppressWarnings
(
"unchecked"
)
public
void
accept
(
P_OUT
u
)
{
// We can do better that this too; optimize for depth=0 case and just grab spliterator and forEach it
Stream
<?
extends
R
>
result
=
mapper
.
apply
(
u
);
...
...
@@ -284,7 +282,7 @@ abstract class ReferencePipeline<P_IN, P_OUT>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
|
StreamOpFlag
.
NOT_SIZED
)
{
@Override
Sink
<
P_OUT
>
opWrapSink
(
int
flags
,
Sink
<
Integer
>
sink
)
{
return
new
Sink
.
ChainedReference
<
P_OUT
>(
sink
)
{
return
new
Sink
.
ChainedReference
<
P_OUT
,
Integer
>(
sink
)
{
IntConsumer
downstreamAsInt
=
downstream:
:
accept
;
@Override
public
void
begin
(
long
size
)
{
...
...
@@ -311,7 +309,7 @@ abstract class ReferencePipeline<P_IN, P_OUT>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
|
StreamOpFlag
.
NOT_SIZED
)
{
@Override
Sink
<
P_OUT
>
opWrapSink
(
int
flags
,
Sink
<
Double
>
sink
)
{
return
new
Sink
.
ChainedReference
<
P_OUT
>(
sink
)
{
return
new
Sink
.
ChainedReference
<
P_OUT
,
Double
>(
sink
)
{
DoubleConsumer
downstreamAsDouble
=
downstream:
:
accept
;
@Override
public
void
begin
(
long
size
)
{
...
...
@@ -338,7 +336,7 @@ abstract class ReferencePipeline<P_IN, P_OUT>
StreamOpFlag
.
NOT_SORTED
|
StreamOpFlag
.
NOT_DISTINCT
|
StreamOpFlag
.
NOT_SIZED
)
{
@Override
Sink
<
P_OUT
>
opWrapSink
(
int
flags
,
Sink
<
Long
>
sink
)
{
return
new
Sink
.
ChainedReference
<
P_OUT
>(
sink
)
{
return
new
Sink
.
ChainedReference
<
P_OUT
,
Long
>(
sink
)
{
LongConsumer
downstreamAsLong
=
downstream:
:
accept
;
@Override
public
void
begin
(
long
size
)
{
...
...
@@ -364,9 +362,8 @@ abstract class ReferencePipeline<P_IN, P_OUT>
0
)
{
@Override
Sink
<
P_OUT
>
opWrapSink
(
int
flags
,
Sink
<
P_OUT
>
sink
)
{
return
new
Sink
.
ChainedReference
<
P_OUT
>(
sink
)
{
return
new
Sink
.
ChainedReference
<
P_OUT
,
P_OUT
>(
sink
)
{
@Override
@SuppressWarnings
(
"unchecked"
)
public
void
accept
(
P_OUT
u
)
{
tee
.
accept
(
u
);
downstream
.
accept
(
u
);
...
...
@@ -495,6 +492,7 @@ abstract class ReferencePipeline<P_IN, P_OUT>
}
@Override
@SuppressWarnings
(
"unchecked"
)
public
final
<
R
,
A
>
R
collect
(
Collector
<?
super
P_OUT
,
A
,
?
extends
R
>
collector
)
{
A
container
;
if
(
isParallel
()
...
...
src/share/classes/java/util/stream/Sink.java
浏览文件 @
dad0c095
...
...
@@ -241,11 +241,10 @@ interface Sink<T> extends Consumer<T> {
* implementation of the {@code accept()} method must call the correct
* {@code accept()} method on the downstream {@code Sink}.
*/
static
abstract
class
ChainedReference
<
T
>
implements
Sink
<
T
>
{
@SuppressWarnings
(
"rawtypes"
)
protected
final
Sink
downstream
;
static
abstract
class
ChainedReference
<
T
,
E_OUT
>
implements
Sink
<
T
>
{
protected
final
Sink
<?
super
E_OUT
>
downstream
;
public
ChainedReference
(
Sink
downstream
)
{
public
ChainedReference
(
Sink
<?
super
E_OUT
>
downstream
)
{
this
.
downstream
=
Objects
.
requireNonNull
(
downstream
);
}
...
...
@@ -274,11 +273,10 @@ interface Sink<T> extends Consumer<T> {
* The implementation of the {@code accept()} method must call the correct
* {@code accept()} method on the downstream {@code Sink}.
*/
static
abstract
class
ChainedInt
implements
Sink
.
OfInt
{
@SuppressWarnings
(
"rawtypes"
)
protected
final
Sink
downstream
;
static
abstract
class
ChainedInt
<
E_OUT
>
implements
Sink
.
OfInt
{
protected
final
Sink
<?
super
E_OUT
>
downstream
;
public
ChainedInt
(
Sink
downstream
)
{
public
ChainedInt
(
Sink
<?
super
E_OUT
>
downstream
)
{
this
.
downstream
=
Objects
.
requireNonNull
(
downstream
);
}
...
...
@@ -307,11 +305,10 @@ interface Sink<T> extends Consumer<T> {
* The implementation of the {@code accept()} method must call the correct
* {@code accept()} method on the downstream {@code Sink}.
*/
static
abstract
class
ChainedLong
implements
Sink
.
OfLong
{
@SuppressWarnings
(
"rawtypes"
)
protected
final
Sink
downstream
;
static
abstract
class
ChainedLong
<
E_OUT
>
implements
Sink
.
OfLong
{
protected
final
Sink
<?
super
E_OUT
>
downstream
;
public
ChainedLong
(
Sink
downstream
)
{
public
ChainedLong
(
Sink
<?
super
E_OUT
>
downstream
)
{
this
.
downstream
=
Objects
.
requireNonNull
(
downstream
);
}
...
...
@@ -340,11 +337,10 @@ interface Sink<T> extends Consumer<T> {
* The implementation of the {@code accept()} method must call the correct
* {@code accept()} method on the downstream {@code Sink}.
*/
static
abstract
class
ChainedDouble
implements
Sink
.
OfDouble
{
@SuppressWarnings
(
"rawtypes"
)
protected
final
Sink
downstream
;
static
abstract
class
ChainedDouble
<
E_OUT
>
implements
Sink
.
OfDouble
{
protected
final
Sink
<?
super
E_OUT
>
downstream
;
public
ChainedDouble
(
Sink
downstream
)
{
public
ChainedDouble
(
Sink
<?
super
E_OUT
>
downstream
)
{
this
.
downstream
=
Objects
.
requireNonNull
(
downstream
);
}
...
...
src/share/classes/java/util/stream/SliceOps.java
浏览文件 @
dad0c095
...
...
@@ -96,6 +96,11 @@ final class SliceOps {
}
}
@SuppressWarnings
(
"unchecked"
)
private
static
<
T
>
IntFunction
<
T
[]>
castingArray
()
{
return
size
->
(
T
[])
new
Object
[
size
];
}
/**
* Appends a "slice" operation to the provided stream. The slice operation
* may be may be skip-only, limit-only, or skip-and-limit.
...
...
@@ -107,12 +112,12 @@ final class SliceOps {
* is to be imposed
*/
public
static
<
T
>
Stream
<
T
>
makeRef
(
AbstractPipeline
<?,
T
,
?>
upstream
,
long
skip
,
long
limit
)
{
long
skip
,
long
limit
)
{
if
(
skip
<
0
)
throw
new
IllegalArgumentException
(
"Skip must be non-negative: "
+
skip
);
return
new
ReferencePipeline
.
StatefulOp
<
T
,
T
>(
upstream
,
StreamShape
.
REFERENCE
,
flags
(
limit
))
{
return
new
ReferencePipeline
.
StatefulOp
<
T
,
T
>(
upstream
,
StreamShape
.
REFERENCE
,
flags
(
limit
))
{
Spliterator
<
T
>
unorderedSkipLimitSpliterator
(
Spliterator
<
T
>
s
,
long
skip
,
long
limit
,
long
sizeIfKnown
)
{
if
(
skip
<=
sizeIfKnown
)
{
...
...
@@ -146,7 +151,7 @@ final class SliceOps {
// cancellation will be more aggressive cancelling later tasks
// if the target slice size has been reached from a given task,
// cancellation should also clear local results if any
return
new
SliceTask
<>(
this
,
helper
,
spliterator
,
i
->
(
T
[])
new
Object
[
i
]
,
skip
,
limit
).
return
new
SliceTask
<>(
this
,
helper
,
spliterator
,
castingArray
()
,
skip
,
limit
).
invoke
().
spliterator
();
}
}
...
...
@@ -182,7 +187,7 @@ final class SliceOps {
@Override
Sink
<
T
>
opWrapSink
(
int
flags
,
Sink
<
T
>
sink
)
{
return
new
Sink
.
ChainedReference
<
T
>(
sink
)
{
return
new
Sink
.
ChainedReference
<
T
,
T
>(
sink
)
{
long
n
=
skip
;
long
m
=
limit
>=
0
?
limit
:
Long
.
MAX_VALUE
;
...
...
@@ -291,7 +296,7 @@ final class SliceOps {
@Override
Sink
<
Integer
>
opWrapSink
(
int
flags
,
Sink
<
Integer
>
sink
)
{
return
new
Sink
.
ChainedInt
(
sink
)
{
return
new
Sink
.
ChainedInt
<
Integer
>
(
sink
)
{
long
n
=
skip
;
long
m
=
limit
>=
0
?
limit
:
Long
.
MAX_VALUE
;
...
...
@@ -400,7 +405,7 @@ final class SliceOps {
@Override
Sink
<
Long
>
opWrapSink
(
int
flags
,
Sink
<
Long
>
sink
)
{
return
new
Sink
.
ChainedLong
(
sink
)
{
return
new
Sink
.
ChainedLong
<
Long
>
(
sink
)
{
long
n
=
skip
;
long
m
=
limit
>=
0
?
limit
:
Long
.
MAX_VALUE
;
...
...
@@ -509,7 +514,7 @@ final class SliceOps {
@Override
Sink
<
Double
>
opWrapSink
(
int
flags
,
Sink
<
Double
>
sink
)
{
return
new
Sink
.
ChainedDouble
(
sink
)
{
return
new
Sink
.
ChainedDouble
<
Double
>
(
sink
)
{
long
n
=
skip
;
long
m
=
limit
>=
0
?
limit
:
Long
.
MAX_VALUE
;
...
...
@@ -560,13 +565,13 @@ final class SliceOps {
private
volatile
boolean
completed
;
SliceTask
(
AbstractPipeline
<
?
,
P_OUT
,
?>
op
,
SliceTask
(
AbstractPipeline
<
P_OUT
,
P_OUT
,
?>
op
,
PipelineHelper
<
P_OUT
>
helper
,
Spliterator
<
P_IN
>
spliterator
,
IntFunction
<
P_OUT
[]>
generator
,
long
offset
,
long
size
)
{
super
(
helper
,
spliterator
);
this
.
op
=
(
AbstractPipeline
<
P_OUT
,
P_OUT
,
?>)
op
;
this
.
op
=
op
;
this
.
generator
=
generator
;
this
.
targetOffset
=
offset
;
this
.
targetSize
=
size
;
...
...
src/share/classes/java/util/stream/SortedOps.java
浏览文件 @
dad0c095
...
...
@@ -129,7 +129,7 @@ final class SortedOps {
}
@Override
public
Sink
<
T
>
opWrapSink
(
int
flags
,
Sink
sink
)
{
public
Sink
<
T
>
opWrapSink
(
int
flags
,
Sink
<
T
>
sink
)
{
Objects
.
requireNonNull
(
sink
);
// If the input is already naturally sorted and this operation
...
...
@@ -280,12 +280,12 @@ final class SortedOps {
/**
* {@link ForkJoinTask} for implementing sort on SIZED reference streams.
*/
private
static
final
class
SizedRefSortingSink
<
T
>
extends
Sink
.
ChainedReference
<
T
>
{
private
static
final
class
SizedRefSortingSink
<
T
>
extends
Sink
.
ChainedReference
<
T
,
T
>
{
private
final
Comparator
<?
super
T
>
comparator
;
private
T
[]
array
;
private
int
offset
;
SizedRefSortingSink
(
Sink
<
T
>
sink
,
Comparator
<?
super
T
>
comparator
)
{
SizedRefSortingSink
(
Sink
<
?
super
T
>
sink
,
Comparator
<?
super
T
>
comparator
)
{
super
(
sink
);
this
.
comparator
=
comparator
;
}
...
...
@@ -320,11 +320,11 @@ final class SortedOps {
/**
* {@link Sink} for implementing sort on reference streams.
*/
private
static
final
class
RefSortingSink
<
T
>
extends
Sink
.
ChainedReference
<
T
>
{
private
static
final
class
RefSortingSink
<
T
>
extends
Sink
.
ChainedReference
<
T
,
T
>
{
private
final
Comparator
<?
super
T
>
comparator
;
private
ArrayList
<
T
>
list
;
RefSortingSink
(
Sink
<
T
>
sink
,
Comparator
<?
super
T
>
comparator
)
{
RefSortingSink
(
Sink
<
?
super
T
>
sink
,
Comparator
<?
super
T
>
comparator
)
{
super
(
sink
);
this
.
comparator
=
comparator
;
}
...
...
@@ -352,11 +352,11 @@ final class SortedOps {
/**
* {@link Sink} for implementing sort on SIZED int streams.
*/
private
static
final
class
SizedIntSortingSink
extends
Sink
.
ChainedInt
{
private
static
final
class
SizedIntSortingSink
extends
Sink
.
ChainedInt
<
Integer
>
{
private
int
[]
array
;
private
int
offset
;
SizedIntSortingSink
(
Sink
downstream
)
{
SizedIntSortingSink
(
Sink
<?
super
Integer
>
downstream
)
{
super
(
downstream
);
}
...
...
@@ -386,10 +386,10 @@ final class SortedOps {
/**
* {@link Sink} for implementing sort on int streams.
*/
private
static
final
class
IntSortingSink
extends
Sink
.
ChainedInt
{
private
static
final
class
IntSortingSink
extends
Sink
.
ChainedInt
<
Integer
>
{
private
SpinedBuffer
.
OfInt
b
;
IntSortingSink
(
Sink
sink
)
{
IntSortingSink
(
Sink
<?
super
Integer
>
sink
)
{
super
(
sink
);
}
...
...
@@ -417,11 +417,11 @@ final class SortedOps {
/**
* {@link Sink} for implementing sort on SIZED long streams.
*/
private
static
final
class
SizedLongSortingSink
extends
Sink
.
ChainedLong
{
private
static
final
class
SizedLongSortingSink
extends
Sink
.
ChainedLong
<
Long
>
{
private
long
[]
array
;
private
int
offset
;
SizedLongSortingSink
(
Sink
downstream
)
{
SizedLongSortingSink
(
Sink
<?
super
Long
>
downstream
)
{
super
(
downstream
);
}
...
...
@@ -451,10 +451,10 @@ final class SortedOps {
/**
* {@link Sink} for implementing sort on long streams.
*/
private
static
final
class
LongSortingSink
extends
Sink
.
ChainedLong
{
private
static
final
class
LongSortingSink
extends
Sink
.
ChainedLong
<
Long
>
{
private
SpinedBuffer
.
OfLong
b
;
LongSortingSink
(
Sink
sink
)
{
LongSortingSink
(
Sink
<?
super
Long
>
sink
)
{
super
(
sink
);
}
...
...
@@ -482,11 +482,11 @@ final class SortedOps {
/**
* {@link Sink} for implementing sort on SIZED double streams.
*/
private
static
final
class
SizedDoubleSortingSink
extends
Sink
.
ChainedDouble
{
private
static
final
class
SizedDoubleSortingSink
extends
Sink
.
ChainedDouble
<
Double
>
{
private
double
[]
array
;
private
int
offset
;
SizedDoubleSortingSink
(
Sink
downstream
)
{
SizedDoubleSortingSink
(
Sink
<?
super
Double
>
downstream
)
{
super
(
downstream
);
}
...
...
@@ -516,10 +516,10 @@ final class SortedOps {
/**
* {@link Sink} for implementing sort on double streams.
*/
private
static
final
class
DoubleSortingSink
extends
Sink
.
ChainedDouble
{
private
static
final
class
DoubleSortingSink
extends
Sink
.
ChainedDouble
<
Double
>
{
private
SpinedBuffer
.
OfDouble
b
;
DoubleSortingSink
(
Sink
sink
)
{
DoubleSortingSink
(
Sink
<?
super
Double
>
sink
)
{
super
(
sink
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录