java list对象排序 使用 Stream 流排序 字段属性为string
时间: 2024-03-26 19:40:11 浏览: 149
可以使用Java 8提供的Stream API对List对象进行排序,具体实现如下:
假设有一个名为list的List<String>对象,需要按照某个字段属性进行排序,可以使用如下代码:
```java
list = list.stream().sorted(Comparator.comparing(String::toString)).collect(Collectors.toList());
```
其中,Comparator.comparing()方法可以根据指定字段属性进行排序,这里使用String::toString表示按照字符串本身进行排序。最后使用collect(Collectors.toList())方法将Stream流转换为List对象。
需要注意的是,上述代码会改变原有的List对象,如果不想改变原有的List对象,可以先将其复制一份再进行排序。
相关问题
java stream获取list中字段属性为long的list
在Java中,你可以使用Stream API来过滤出List中的元素,如果它们的某个字段的值为Long类型。假设我们有一个Person类,它有一个名为age的Long类型的字段,你可以这样做:
```java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
class Person {
private Long age;
// getters and setters...
public Long getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) {
List<Person> people = new ArrayList<>();
people.add(new Person().setAge(25L));
people.add(new Person().setAge(30L));
people.add(new Person());
// 使用Stream API筛选出年龄字段为Long的列表
List<Long> longAges = people.stream()
.filter(Person::getAge != null && Person::getAge instanceof Long)
.map(Person::getAge)
.collect(Collectors.toList());
System.out.println(longAges); // 输出:[25, 30]
Java8 stream list 对象某个字段排序
在 Java 8 中,`Stream API` 提供了一种简洁而强大的方式对集合(如 `List`)进行操作。如果需要按照对象的某个字段对列表排序,可以结合 `Comparator.comparing()` 和 `sorted()` 方法完成。
### 示例代码
假设有一个包含员工信息的对象列表,并希望按工资从高到低排序:
```java
import java.util.*;
import java.util.stream.*;
class Employee {
private String name;
private double salary;
public Employee(String name, double salary) {
this.name = name;
this.salary = salary;
}
// Getter for the 'salary' field.
public double getSalary() {
return salary;
}
@Override
public String toString() {
return "Employee{name='" + name + "', salary=" + salary + "}";
}
}
public class Main {
public static void main(String[] args) {
List<Employee> employees = Arrays.asList(
new Employee("Alice", 5000),
new Employee("Bob", 7000),
new Employee("Charlie", 6000)
);
// 按照薪水降序排列
List<Employee> sortedEmployees = employees.stream()
.sorted(Comparator.comparingDouble(Employee::getSalary).reversed())
.collect(Collectors.toList());
System.out.println(sortedEmployees);
}
}
```
在这个例子中,我们首先创建了一个简单的 `Employee` 类及其对应的构造函数、getter 方法以及字符串表示形式。然后通过流式处理的方式将原始数据转换为一个新的有序列表。
#### 关键步骤解析:
1. **获取 Stream 流**:利用 `employees.stream()` 获得该列表对应的数据流。
2. **应用排序规则**:使用 `sorted(Comparator)` 函数指定比较器;这里采用了基于薪资值反向排序 (`reversed`) 的策略。
3. **收集结果回集合结构**:最后调用 `.collect(Collectors.toList())` 将排好序的结果存储进新的 ArrayList 实例内并返回。
这种模式既优雅又易读,特别适合现代Java开发需求!
阅读全文
相关推荐













