我正在尝试使用字符串编写部分并提出下面的代码,请帮助解决代码的语法问题。
KStreamBuilder builder = new KStreamBuilder();
KStream<String, String> textlines = builder.stream("INTOPIC");
KStream<String, String> mstream = textlines
.foreach(new ForeachAction<String, String>(){
public void apply(String key, String value){
String str=value.replace("[","");
for(int y=0; y<str.length(); y++){
//System.out.print(str.charAt(y));
}
//System.out.print("\n");
}
});
mstream.to("OUTTOPIC");
在第二个KStream语句中显示不兼容的类型..... 我希望替换逻辑可以使用,它应该受到textlines变量的影响。 提前谢谢。
答案 0 :(得分:1)
foreach
的结果是void
,而不是下一个KStream
。如果要转换数据,则需要使用map
代替...
代码将采用以下方式(特别是如果您还需要更改密钥,如果没有 - 请参阅下一个变体):
KStreamBuilder builder = new KStreamBuilder();
KStream<String, String> textlines = builder.stream("INTOPIC");
KStream<String, String> mstream = textlines
.map((key, value) -> new KeyValue<>(key, value.replace("[",""))));
mstream.to("OUTTOPIC");
或者您可以用以下内容替换第3-4行(这将导致更好的执行):
KStream<String, String> mstream = textlines
.mapValues(value -> value.replace("[",""));