Skip to content

Commit 56194e9

Browse files
committed
update streams,add some filter methods about list and set
1 parent e1728d3 commit 56194e9

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed

summer-java-core/src/main/java/com/dianpoint/summer/lang/Streams.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
package com.dianpoint.summer.lang;
22

3+
import com.dianpoint.summer.utils.SetUtils;
4+
5+
import java.util.Arrays;
6+
import java.util.LinkedHashSet;
7+
import java.util.List;
8+
import java.util.Set;
39
import java.util.function.Predicate;
10+
import java.util.stream.Collectors;
411
import java.util.stream.Stream;
512
import java.util.stream.StreamSupport;
613

@@ -29,4 +36,35 @@ static <T> Stream<T> filterStream(T[] values, Predicate<? super T> predicate) {
2936
static <T, S extends Iterable<T>> Stream<T> filterStream(S values, Predicate<? super T> predicate) {
3037
return stream(values).filter(predicate);
3138
}
39+
40+
static <T> List<T> filterList(T[] values, Predicate<? super T> predicate) {
41+
return filterList(Arrays.asList(values), predicate);
42+
}
43+
44+
static <T, S extends Iterable<T>> List<T> filterList(S values, Predicate<? super T> predicate) {
45+
return filterStream(values, predicate).collect(Collectors.toList());
46+
}
47+
48+
49+
static <T, S extends Iterable<T>> Set<T> filterSet(S values, Predicate<? super T> predicate) {
50+
return filterStream(values, predicate).collect(LinkedHashSet::new, Set::add, Set::addAll);
51+
}
52+
53+
static <T> Set<T> filterSet(T[] values, Predicate<T> predicate) {
54+
return filterSet(Arrays.asList(values), predicate);
55+
}
56+
57+
58+
static <T, S extends Iterable<T>> S filterAll(S values, Predicate<? super T> predicate) {
59+
boolean isSet = SetUtils.isSet(values);
60+
if (isSet) {
61+
return (S) filterSet(values, predicate);
62+
}
63+
return (S) filterList(values, predicate);
64+
}
65+
66+
67+
//filter逻辑操作
68+
69+
3270
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.dianpoint.summer.utils;
2+
3+
import java.util.Collections;
4+
import java.util.LinkedHashSet;
5+
import java.util.Set;
6+
7+
public class SetUtils implements Utils {
8+
9+
protected static final float FIXED_LOAD_FACTOR = 1.00f;
10+
11+
public static boolean isSet(Iterable<?> elements) {
12+
return elements instanceof Set;
13+
}
14+
15+
public static <E> Set<E> of(E... elements) {
16+
return ofSet(elements);
17+
}
18+
19+
public static <E> Set<E> ofSet(E... elements) {
20+
int size = elements == null ? 0 : elements.length;
21+
if (size < 1) {
22+
return Collections.emptySet();
23+
} else if (size == 1) {
24+
return Collections.singleton(elements[0]);
25+
}
26+
27+
Set<E> set = new LinkedHashSet<>(size, FIXED_LOAD_FACTOR);
28+
for (int i = 0; i < size; i++) {
29+
set.add(elements[i]);
30+
}
31+
return Collections.unmodifiableSet(set);
32+
}
33+
}

0 commit comments

Comments
 (0)