我想通过调用expand()
来映射列表中的每个条目, List<String> myList = new ArrayList<>();
List<String> expanded = new ArrayList<>();
for (String s : myList) {
expanded.addAll(expand(s));
}
return expanded;
private List<String> expand(String x) {
return Arrays.asList(x, x, x);
}
返回多个条目,然后将结果作为列表收集。
没有溪流,我会这样做:
return myList.stream().map(this::expand).collect(Collectors.toList());
如何用流完成此操作?这给出了编译错误:
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
int Count = 0;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Count++;
label1.Text = Count.ToString();
}
}
}
答案 0 :(得分:4)
flatMap
可以帮助您:
ValidationTask
答案 1 :(得分:4)
return myList.stream().map(this::expand).collect(Collectors.toList());
返回List<List<String>>
,因为当myList.stream().map(this::expand)
传递给Stream<List<String>>
变量而不是map()
变量的变量时,List<String>
会返回键入为String
的流
你不想要那个。
将Stream.map()
链Stream.flatMap()
与Stream<List<String>>
合并为Stream<String>
至return myList.stream()
.map(this::expand)
.flatMap(x->x.stream())
.collect(Collectors.toList());
:
function startCounter(){
$('.counter').each(function (index) {
$(this).prop('Counter',0).animate({
Counter: $(this).text()
}, {
duration: 2000,
easing: 'swing',
step: function (now) {
$(this).text(Math.ceil(now));
}
});
});
}
startCounter();
答案 2 :(得分:3)
使用Stream<List<String>
将Stream<String>
转换为return myList.stream().map(this::expand).flatMap(Collection::stream).collect(Collectors.toList());
:
{{1}}