我有这样的密码:
public class A {
private String id;
//constructor, getter, setter
}在java中,我可以使用以下内容:
public class C {
@Test
public void t() {
List<A> list = Arrays.asList(new A("1"));
list.sort(Comparator.comparing(A::getId));
Map<String, List<A>> map = list.stream().collect(Collectors.groupingBy(A::getId));
}
}以下是scala(2.12)测试:
class B {
@Test
def t(): Unit = {
val list = util.Arrays.asList(new A("1"))
list.sort(Comparator.comparing(a => a.getId))
list.stream().collect(Collectors.groupingBy(a => a.getId))
}
}但是在scala测试中,list.sort(Comparator.comparing(a => a.getId))将得到两个错误:
list.stream().collect(Collectors.groupingBy(a => a.getId))将得到以下错误:
我该怎么用呢?
发布于 2019-04-02 09:42:19
试一试
import scala.compat.java8.FunctionConverters._
val list = util.Arrays.asList(new A("1"))
list.sort(Comparator.comparing[A, String](((a: A) => a.getId).asJava))
list.stream().collect(Collectors.groupingBy[A, String](a => a.getId))libraryDependencies += "org.scala-lang.modules" %% "scala-java8-compat" % "0.9.0"
发布于 2019-03-29 11:10:15
一个队列应该是这样的,按照id对列表进行排序,然后按id对它们进行分组,映射不是有序的数据结构,所以id的顺序可以是任意的。您可以做的是首先对它们进行分组,然后按键对Map排序,在本例中为id。
case class A(id:String)
val list = List(A("1"), A("2"), A("4"), A("3"))
list.sortBy(_.id).groupBy(_.id)https://stackoverflow.com/questions/55415881
复制相似问题