Java 重构番石榴&x27;s Iterables.Cactoos中等效的变换和函数

Java 重构番石榴&x27;s Iterables.Cactoos中等效的变换和函数,java,oop,guava,cactoos,Java,Oop,Guava,Cactoos,我正在将Google Guava库的一些用法重构为库,我很难找到函数类和Iterables.transform方法的等效实现,使用Cactoos库作为替换 示例(来自): 新连接文本( " ", 易变( repo.languages(), 新函数(){ @凌驾 公共字符串应用(最终语言lang){ 返回String.format(“#%s”,lang.name()); } } ) ).asString() 在Cactoos中,这两者的正确等效实现是什么?对于映射的iterable,存在类。就功能

我正在将Google Guava库的一些用法重构为库,我很难找到函数类和Iterables.transform方法的等效实现,使用Cactoos库作为替换

示例(来自):

新连接文本( " ", 易变( repo.languages(), 新函数(){ @凌驾 公共字符串应用(最终语言lang){ 返回String.format(“#%s”,lang.name()); } } ) ).asString()
在Cactoos中,这两者的正确等效实现是什么?

对于映射的iterable,存在类。就功能而言,软件包中有很多这样的软件包

应该可以:

String txt = new JoinedText(
  " ",
  new Mapped<>(
    repo.languages(),
    lang -> String.format("#%s", lang.name())
  )
).asString();
String txt=new JoinedText(
" ",
新映射(
repo.languages(),
lang->String.format(“#%s”,lang.name())
)
).asString();

你为什么不直接使用
repo.languages().stream().map(Language::name).collect(collector.joining(“”)呢?我可以使用那种方法。语言是语言的一种可移植性,需要从可移植性转换为流,我正试图避免()@filfreire如果您使用的是Java 8,为什么您这么不愿意使用流?在您链接的so线程中,有一种(丑陋但有效)方法可以将
Iterable
转换为
Stream
@Xaerxess,这种不情愿来自于“丑陋但有效”使用Stream作为初始方法是没有问题的,但是默认情况下languages变量是一个Iterable,我正试图找到一个不需要转换为Stream的变通解决方案。
String txt = new JoinedText(
  " ",
  new Mapped<>(
    repo.languages(),
    lang -> String.format("#%s", lang.name())
  )
).asString();