Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 谓词匹配时有条件地转换流元素_Java_Java Stream - Fatal编程技术网

Java 谓词匹配时有条件地转换流元素

Java 谓词匹配时有条件地转换流元素,java,java-stream,Java,Java Stream,我有一个流,只想在谓词匹配时应用一个方法 例如,我想处理一个流,并用默认值替换所有nulls。实现这一点的最佳方法是什么?您应该只使用映射值 data.stream() .map(v -> v == null ? defaultValue : v) ... // do whatever you need to do with it. 编辑 如果您需要经常这样做,您可以创建一个函数来为您这样做 public class DefaultValue<T> exten

我有一个流,只想在谓词匹配时应用一个方法


例如,我想处理一个流,并用默认值替换所有
null
s。实现这一点的最佳方法是什么?

您应该只使用映射值

data.stream()
    .map(v -> v == null ? defaultValue : v)
    ... // do whatever you need to do with it.
编辑

如果您需要经常这样做,您可以创建一个函数来为您这样做

public class DefaultValue<T> extends Function<T, T> P{
    private final T t;
    public DefaultValue(T t){
        this.t. = t;
    }

    public T apply(T t) {
         return t == null ? this.t : t;
    }
 }

 data.stream()
     .map(new DefaultValue(someValue));
     // Do what you need to do
public类DefaultValue扩展函数P{
私人期末考试;
公共默认值(T){
这个t=t;
}
公共T应用(T){
返回t==null?this.t:t;
}
}
data.stream()
.map(新的默认值(someValue));
//做你需要做的事

您应该只使用映射值

data.stream()
    .map(v -> v == null ? defaultValue : v)
    ... // do whatever you need to do with it.
编辑

如果您需要经常这样做,您可以创建一个函数来为您这样做

public class DefaultValue<T> extends Function<T, T> P{
    private final T t;
    public DefaultValue(T t){
        this.t. = t;
    }

    public T apply(T t) {
         return t == null ? this.t : t;
    }
 }

 data.stream()
     .map(new DefaultValue(someValue));
     // Do what you need to do
public类DefaultValue扩展函数P{
私人期末考试;
公共默认值(T){
这个t=t;
}
公共T应用(T){
返回t==null?this.t:t;
}
}
data.stream()
.map(新的默认值(someValue));
//做你需要做的事

如果您希望保留与过滤器不匹配的项目的原始值,请使用三元逻辑的
映射:

  • 未通过筛选的项目按原样返回
  • 通过筛选的项将被转换
以下是一个例子:

Stream<String> stream = Arrays.stream(
    new String[]{"quick", null, "brown", "fox", null, "jumps"}
);
List<String> res = stream
    .map(s -> s != null ? s : "<EMPTY>")
    .collect(Collectors.toList());
for (String s : res) {
    System.out.println(s);
}

如果您希望保留与过滤器不匹配的项目的原始值,请使用三元逻辑的
映射:

  • 未通过筛选的项目按原样返回
  • 通过筛选的项将被转换
以下是一个例子:

Stream<String> stream = Arrays.stream(
    new String[]{"quick", null, "brown", "fox", null, "jumps"}
);
List<String> res = stream
    .map(s -> s != null ? s : "<EMPTY>")
    .collect(Collectors.toList());
for (String s : res) {
    System.out.println(s);
}

使用简单循环?使用简单循环?