Lambda表达式的问题
Collection c= new ArrayList<>();
c.add(10);
c.add(5);
c.add(9);
c.add(7);
c.add(5);
c.forEach(s -> System.out.println(s));
Collections.sort((e1,e2)->e1-e2);
为什么 Collections.sort((e1,e2)->e1-e2);会报错
你要把list传进去作为第一个参数
Collections.sort(c, (e1, e2) -> Integer.compare(e1, e2));
Collections.sort((e1,e2)->e1-e2)
这一行会报错,是因为 Collections.sort
方法的第一个参数是一个 List
类型,而不是一个 Comparator
类型。
解决方案是:先将 c
集合转换为 List
类型,再使用 Collections.sort
方法,代码如下:
List<Integer> list = new ArrayList<>(c);
Collections.sort(list, (e1, e2) -> e1 - e2);
list.forEach(s -> System.out.println(s));
这样,代码就能正常运行,并且能够将集合中的数据排序。
应该要把应 c 作为第一个参数传递进去吧,像这样
Collections.sort(c, (e1, e2) -> e1 - e2);