相关疑难解决方法(0)

标准Kotlin库中提供了哪些Java 8 Stream.collect等价物?

在Java 8中,Stream.collect允许对集合进行聚合.在Kotlin中,除了作为stdlib中的扩展函数的集合之外,它不以相同的方式存在.但目前尚不清楚不同用例的等价性.

例如,在JavaDocCollectors顶部是为Java 8编写的示例,当将它们移植到Kolin时,在不同的JDK版本上不能使用Java 8类,因此它们应该以不同的方式编写.

在网上显示Kotlin集合示例的资源方面,它们通常是微不足道的,并没有真正与相同的用例进行比较.什么是真正符合Java 8记录的案例的好例子Stream.collect?那里的清单是:

  • 将名称累积到列表中
  • 将名称累积到TreeSet中
  • 将元素转换为字符串并将它们连接起来,用逗号分隔
  • 计算员工工资的总和
  • 按部门分组员工
  • 按部门计算工资总额
  • 将学生分成传球和失败

以上链接的JavaDoc中的详细信息.

注意: 这个问题是由作者故意编写和回答的(答案问题),因此对于常见问题的Kotlin主题的惯用答案存在于SO中.还要澄清为Kotlin的alphas写的一些非常古老的答案,这些答案对于当前的Kotlin来说是不准确的.

java collections java-8 kotlin java-stream

171
推荐指数
2
解决办法
3万
查看次数

如何将java.util.stream.Stream <Something>转换为kotlin.Sequence <Something>

Java 8 Streams非常强大,但是当不需要并行性时,Kotlin Sequence似乎更易于使用.

有没有办法将a stream.sequencial()转换为序列?

java kotlin java-stream

13
推荐指数
2
解决办法
1583
查看次数

Java 8 lambda到kotlin lambda

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

List<String> collect = data1.stream().map(account -> account.getName()).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

到kotlin代码.Kotlin在线编辑器给了我以下代码

 val collect = data1.stream().map({ account-> account.getName() }).collect(Collectors.toList()) …
Run Code Online (Sandbox Code Playgroud)

kotlin

5
推荐指数
1
解决办法
1628
查看次数

标签 统计

kotlin ×3

java ×2

java-stream ×2

collections ×1

java-8 ×1