Skip to content

Commit 544f060

Browse files
author
Gary Gregory
committed
Only create wrapper set once.
1 parent ce8d7e0 commit 544f060

2 files changed

Lines changed: 11 additions & 2 deletions

File tree

src/main/java/org/apache/commons/io/input/AbstractCharacterFilterReader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
*/
2929
public abstract class AbstractCharacterFilterReader extends FilterReader {
3030

31-
private static final IntPredicate SKIP_NONE = ch -> false;
31+
protected static final IntPredicate SKIP_NONE = ch -> false;
3232

3333
private final IntPredicate skip;
3434

src/main/java/org/apache/commons/io/input/CharacterSetFilterReader.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.Collections;
2222
import java.util.HashSet;
2323
import java.util.Set;
24+
import java.util.function.IntPredicate;
2425

2526
/**
2627
* A filter reader that removes a given set of characters represented as {@code int} code points, handy to remove known
@@ -32,6 +33,14 @@
3233
*/
3334
public class CharacterSetFilterReader extends AbstractCharacterFilterReader {
3435

36+
private static IntPredicate toIntPredicate(final Set<Integer> skip) {
37+
if (skip == null) {
38+
return SKIP_NONE;
39+
}
40+
final Set<Integer> unmodifiableSet = Collections.unmodifiableSet(skip);
41+
return c -> unmodifiableSet.contains(Integer.valueOf(c));
42+
}
43+
3544
/**
3645
* Constructs a new reader.
3746
*
@@ -50,7 +59,7 @@ public CharacterSetFilterReader(final Reader reader, final Integer... skip) {
5059
* @param skip the set of characters to filter out.
5160
*/
5261
public CharacterSetFilterReader(final Reader reader, final Set<Integer> skip) {
53-
super(reader, c -> skip == null ? null : Collections.unmodifiableSet(skip).contains(Integer.valueOf(c)));
62+
super(reader, toIntPredicate(skip));
5463
}
5564

5665
}

0 commit comments

Comments
 (0)