(14-1)使用Lambda表达式,结合TreeSet集合实现数字倒序排序,即从大到小的排序。java
时间: 2023-12-10 14:37:23 浏览: 30
可以使用以下代码实现:
```java
TreeSet<Integer> set = new TreeSet<>((a, b) -> b - a);
set.add(3);
set.add(1);
set.add(5);
set.add(2);
System.out.println(set); // 输出 [5, 3, 2, 1]
```
在这里,我们创建了一个 TreeSet 对象,并传入了一个 Lambda 表达式作为比较器。这个比较器将会根据传入的两个参数(即集合中的两个元素)进行排序,返回值为正数表示第二个参数大于第一个参数,返回值为负数表示第一个参数大于第二个参数,返回值为 0 表示两个参数相等。这里我们使用 `b - a` 来实现从大到小的排序。
然后我们向集合中添加了一些数字,最后打印出来时可以看到它们已经按照从大到小的顺序排列了。
相关问题
使用Lambda表达式,结合TreeSet集合实现数字倒序排序,即从大到小的排序。
可以使用Lambda表达式来实现TreeSet集合中的自定义比较器,从而实现数字倒序排序。代码如下:
```java
TreeSet<Integer> set = new TreeSet<>((a, b) -> b - a);
```
在这个比较器中,Lambda表达式 `(a, b) -> b - a` 表示如果 `b - a` 的值大于0,则认为b大于a,因此将b排在a的前面,从而实现数字倒序排序。
完整代码如下:
```java
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
TreeSet<Integer> set = new TreeSet<>((a, b) -> b - a);
set.add(1);
set.add(3);
set.add(2);
set.add(5);
set.add(4);
System.out.println(set); // [5, 4, 3, 2, 1]
}
}
```
用java的lambda表达式给对象集合排序
在Java中,可以使用`Collections.sort()`方法以及Lambda表达式来对对象集合进行排序。
假设我们有一个包含多个Person对象的List集合,每个Person对象包含姓名(name)和年龄(age)属性。我们可以使用Lambda表达式来按照年龄对Person对象进行升序排序,代码如下所示:
```
List<Person> personList = new ArrayList<Person>();
// 假设personList中已经添加了多个Person对象
Collections.sort(personList, (p1, p2) -> p1.getAge() - p2.getAge());
```
在上述代码中,我们使用了Lambda表达式`(p1, p2) -> p1.getAge() - p2.getAge()`,其作用是定义了一个比较器,用于比较两个Person对象的年龄大小。其中,`(p1, p2)`表示比较器的两个参数,`->`表示Lambda表达式的箭头符号,`p1.getAge() - p2.getAge()`表示比较器的具体实现,即将两个Person对象的年龄相减。
如果要进行降序排序,只需将Lambda表达式中的`p1.getAge() - p2.getAge()`修改为`p2.getAge() - p1.getAge()`即可。
需要注意的是,为了使用Lambda表达式,需要在项目中使用Java 8或以上的版本。