String result = "";
for(String str : strings) {
result = apply(result, str);
}
return result;
我想通过循环中的next元素传递一个操作的结果。在Java 8中有没有优雅的方法呢?
例如,在Ruby中,我们可以使用inject。
strings.inject("") { |s1, s2| apply(s1,s2) }
答案 0 :(得分:8)
您可以使用scanf_s("%c", &x)
:
rsize_t
答案 1 :(得分:1)
如果您不介意添加第三方库,可以使用Eclipse Collections在其对象和原始容器上使用injectInto
方法。 Eclipse Collections的灵感来自Smalltalk Collections API,它也启发了Ruby。以下是使用带有injectInto
的对象(可变和不可变)和原始(可变和不可变)容器的一些示例。
@Test
public void inject()
{
MutableList<String> strings1 = Lists.mutable.with("1", "2", "3");
Assert.assertEquals("123", strings1.injectInto("", this::apply));
ImmutableList<String> strings2 = Lists.immutable.with("1", "2", "3");
Assert.assertEquals("123", strings2.injectInto("", this::apply));
IntList ints = IntLists.mutable.with(1, 2, 3);
Assert.assertEquals("123", ints.injectInto("", this::applyInt));
LazyIterable<Integer> boxedInterval = Interval.oneTo(3);
Assert.assertEquals("123", boxedInterval.injectInto("", this::applyInt));
IntList primitiveInterval = IntInterval.oneTo(3);
Assert.assertEquals("123", primitiveInterval.injectInto("", this::applyInt));
}
public String apply(String result, String each)
{
return result + each;
}
public String applyInt(String result, int each)
{
return result + each;
}
注意:我是Eclipse Collections的提交者