A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

现在我想取出set容器里的每个元素,组成一个长字符串,如何用 lambda表达式书写
String str="";//赋值为空
Set<String> set=new HashSet("adb","sdf","asd");  //创建一个set容器,存放了3个字符串
set.forEach((String name,str)->str+=name+""));//这样就输出有误
请问大神们错在哪
另外有什么简单的的方法

评分

参与人数 1技术分 +2 收起 理由
lwj123 + 2

查看全部评分

2 个回复

倒序浏览
继续顶一下,希望大家一起讨论
回复 使用道具 举报
虽然我之前对java8新特性不是很了解,但是查阅了一番资料后也有所了解,如有错误,也请指正,第一,能调用forEach的对象是Stream的子类对象,而Set不是Stream类的子类,所以不能这么写set.forEach(...),第二 forEach方法接受的参数类型为Consumer<? super T> action  Consumer接口只有一个方法是 void accept(T t),而你所用的 lambda表达式是会返回类型为String的结果的,也就是说你的lambda表达式不能覆盖void accept(T t)方法,所以错误,
我写了一个,但是不能起到连接字符串作用,供你参考下吧
set.stream().forEach((s)->{System.out.println(s+str);});
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马