Lambda表达式的问题

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);