如何过滤和打印键值格式的选择性映射对象



我正在尝试从哈希映射中筛选密钥,并以混合键值格式打印。我有同样的逻辑工作良好的csv格式如下。在下面的代码中,我只从响应对象中选择了一些特性,并以逗号分隔的值返回。

public String mycsvformat(Response response, String[] selectedFeature) {
return Stream.concat(
Stream.of(response.getId()),
Arrays.stream(selectedFeature)
.map(f -> response.getFeature().get(f))
.map(v -> v == null ? "" : v.toString())
)
.collect(Collectors.joining(","));
}

输出:

id1,feature1Value,feature3Value,feature4Value

响应级别-

public class Response {
private String id;
private Map<String, Object> feature;
}

现在我需要打印以下格式的响应:

id1    feature1Key=feature1Value,feature3Key=feature3Value,feature4Key=feature4Value

id后面的制表符分隔,其余全部在键值对中。请提出建议。

下面的代码段会有所帮助。

Arrays.stream(selectedFeature)
.filter(response.getFeature()::containsKey)
.map(f -> String.format("%s=%s", f, response.getFeature()
.get(f)
.toString()))
.collect(Collectors.joining(",", String.format("%st", response.getId()), ""));

假设您只需要在所选功能均不匹配时打印id值。

最新更新