首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 8 lambda到kotlin lambda

Java 8 lambda到kotlin lambda
EN

Stack Overflow用户
提问于 2016-04-30 08:51:33
回答 1查看 2.1K关注 0票数 5
代码语言:javascript
复制
public class Main {
    static class Account {
        private Long id;
        private String name;
        private Book book;

        public Account(Long id, String name, Book book) {
            this.id = id;
            this.name = name;
            this.book = book;
        }

        public String getName() {
            return name;
        }
    }
    public static void main(String[] args) {
        List<Account> data1 = new ArrayList<>();
        data1.add(new Account(1L,"name",null));
        List<String> collect = data1.stream().map(account -> account.getName()).collect(Collectors.toList());

        System.out.println(collect);
    }
}

在上面的代码中,我试图转换以下行

代码语言:javascript
复制
List<String> collect = data1.stream().map(account -> account.getName()).collect(Collectors.toList());

进入kotlin密码。Kotlin在线编辑器给我以下代码

代码语言:javascript
复制
 val collect = data1.stream().map({ account-> account.getName() }).collect(Collectors.toList())
    println(collect)

当我试图运行它时,会产生编译错误。

如何解决这个问题??

或者从帐户对象列表中获取字符串列表的kotlin方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2016-05-09 22:11:50

正如@JBNizet所言,根本不要使用流,如果您要转换到Kotlin,那么就一直转换:

代码语言:javascript
复制
List<String> collect = data1.stream().map(account -> account.getName()).collect(Collectors.toList());

代码语言:javascript
复制
val collect = data1.map { it.name } // already is a list, and use property `name`

在其他情况下,您会发现其他集合类型可以简单地与toList()一起成为列表,或者成为一个集为toSet()等等。在Kotlin运行时中,流中的所有内容都具有等价性。

根本不需要使用Kotlin的Java 8流,它们更冗长,没有任何价值。

要获得更多的替换以避免流,请阅读:What Java 8 Stream.collect equivalents are available in the standard Kotlin library?

您还应该阅读以下内容:

也许这是一个复制:How can I call collect(Collectors.toList()) on a Java 8 Stream in Kotlin?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36952815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档