一、Lambda表达式介绍
Lambda表达式是Java 8中的一个重要的新特性。它是一种匿名函数,可以将其作为方法参数传递到其他方法中,可以让代码更加紧凑,简洁易读。Lambda表达式不需要像传统的匿名内部类那样写很多的模版代码,同时也没有对程序执行效率带来很大的负担。
下面是Lambda表达式的语法:
(parameter1, parameter2, …) -> { statements }
其中,parameter1, parameter2等表示输入参数,statements表示语句块。语句块中可以包含一条或多条语句,可以有返回值或不返回值。
下面是Lambda表达式的一些例子:
// 不带参数的Lambda表达式 () -> System.out.println("Hello World"); // 带一个参数的Lambda表达式 (x) -> System.out.println("Hello " + x); // 带两个参数的Lambda表达式 (x, y) -> x + y;
二、排序操作介绍
在Java 8中,可以通过Stream API来进行排序操作。Stream API是一种面向数据集合的操作API,可以帮助我们非常方便地处理集合中的元素。
Stream API提供了几种不同的排序方法,包括sorted()、sorted(Comparator)、sorted(Comparator.reverseOrder())等等。其中,sorted()方法默认使用SorteNaturalOrderComparator进行排序,sorted(Comparator)方法则使用指定Comparator进行排序。
下面是一些排序操作的例子:
Listlist = Arrays.asList("banana", "apple", "pear", "orange", "grape"); List sortedList = list.stream() .sorted() .collect(Collectors.toList()); System.out.println(sortedList); // [apple, banana, grape, orange, pear] List nums = Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5); List sortedNums = nums.stream() .sorted() .collect(Collectors.toList()); System.out.println(sortedNums); // [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
三、使用Lambda表达式进行排序
使用Lambda表达式可以让我们更加灵活地对集合进行排序。我们可以根据集合元素中的某个属性进行排序,也可以按照某种规则进行排序。
下面是一些使用Lambda表达式进行排序的例子:
1. 按照集合元素的长度进行排序
Listlist = Arrays.asList("banana", "apple", "pear", "orange", "grape"); List sortedList = list.stream() .sorted((s1, s2) -> s1.length() - s2.length()) .collect(Collectors.toList()); System.out.println(sortedList); // [pear, apple, grape, banana, orange]
2. 按照集合元素中的数字大小进行排序
Listnums = Arrays.asList("3", "1", "4", "1", "5", "9", "2", "6", "5", "3", "5"); List sortedNums = nums.stream() .sorted((s1, s2) -> Integer.valueOf(s1) - Integer.valueOf(s2)) .collect(Collectors.toList()); System.out.println(sortedNums); // [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
3. 按照集合元素中某个属性进行排序
class Person { String name; int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } Listpersons = Arrays.asList(new Person("John", 30), new Person("Mary", 25), new Person("Bob", 35)); List sortedPersons = persons.stream() .sorted((p1, p2) -> p1.getAge() - p2.getAge()) .collect(Collectors.toList()); System.out.println(sortedPersons); // [Person{name='Mary', age=25}, Person{name='John', age=30}, Person{name='Bob', age=35}]
四、小结
Java 8提供了非常方便的Lambda表达式和Stream API,可以让我们更加方便地处理集合中的元素。排序操作是集合操作中的一个非常重要的部分,通过使用Lambda表达式和Stream API,我们可以非常灵活地进行集合元素的排序操作。