Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在scala中对自定义类arraybuffer排序并获取子集_Java_Scala_Sorting_Java Stream - Fatal编程技术网

Java 在scala中对自定义类arraybuffer排序并获取子集

Java 在scala中对自定义类arraybuffer排序并获取子集,java,scala,sorting,java-stream,Java,Scala,Sorting,Java Stream,我有一个自定义对象Employee的arraybuffer,它有empname、empno、joiningdate 我想在joiningdate对ArrayBuffer进行排序,并获得前10名 我就是这样做的,但我认为可以有更好的替代方案或优化解决方案 无法在db查询中执行相同的操作,因为我使用的是cassandra db,其中无法对非集群列执行相同的操作 val employeeList: mutable.Buffer[Employee]// getting from db val empl

我有一个自定义对象Employee的arraybuffer,它有empname、empno、joiningdate

我想在joiningdate对ArrayBuffer进行排序,并获得前10名

我就是这样做的,但我认为可以有更好的替代方案或优化解决方案

无法在db查询中执行相同的操作,因为我使用的是cassandra db,其中无法对非集群列执行相同的操作

val employeeList: mutable.Buffer[Employee]// getting from db

val employeeMap = employeeList.groupBy((p: Employee) => p.joiningdate)

val employeeDescSortedMap = new mutable.TreeMap[java.util.Date, 
mutable.Buffer[Employee]]()(Ordering.ordered[java.util.Date].reverse)

val limitedSizeEmployeeMap = new mutable.TreeMap[java.util.Date, mutable.Buffer[Employee]]()

var count: Long = 10

employeeDescSortedMap ++= employeeMap

    employeeDescSortedMap.foreach(employee => {
        if (count > 0) {
            limitedSizeEmployeeMap += employee
            count -= 1
        }
    })

limitedSizeEmployeeMap

如果您在Scaladoc中查找名为
sort
的方法,您会发现。唯一的问题是如何使用它进行降序排序。您可以反转默认的
顺序

val sorted = employeeList.sortBy(_.joiningdate)(Ordering[WhateverTheTypeOfJoiningDateIs].reverse)
sorted.take(10)
或者只需按升序排序并获取最后的元素:

val sorted = employeeList.sortBy(_.joiningdate)    
sorted.takeRight(10).reverse
<>使用你认为更清楚的任何一个。< /P> 注意
sortBy
没有进行适当的排序(根据Scala 2.13应该为其添加方法,但我在中没有看到它们)。因此,将
排列到阵列中并将其排序到位将更快

还有一些top-N算法不需要对整个序列进行排序,但据我所知,它们在Scala或Java标准库中不可用。您可以使用或查看其他选项