让list里的对象根据对象里某个string字段的数字大小排序,使用stream实现
时间: 2024-03-22 11:38:02 浏览: 15
好的,你可以按照以下方式使用 Java Stream API 实现根据对象中某个字符串字段的数字大小升序排序:
假设你有一个对象列表 `objList`,其中每个对象都有一个名为 `field` 的字符串字段,你可以按照以下方式进行排序:
```
List<YourObject> sortedList = objList.stream()
.sorted(Comparator.comparing(obj -> Integer.parseInt(obj.getField())))
.collect(Collectors.toList());
```
这里的 `YourObject` 是你自己定义的对象类,`getField()` 是获取该对象的字符串类型 `field` 字段值的方法。在上述代码中,我们使用 `Comparator.comparing()` 方法和一个 lambda 表达式来将 `field` 字段的字符串类型值转换为整数类型进行比较。
最终使用 `collect()` 方法将排序后的结果收集到一个新的列表中。
需要注意的是,如果 `field` 字段的字符串值无法转换为整数类型,转换过程会抛出 `NumberFormatException` 异常,因此你需要确保 `field` 字段的字符串值都是数字类型的字符串。
相关问题
java list对象排序 使用 Stream 流排序 字段属性为string
可以使用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对象,可以先将其复制一份再进行排序。
使用对象中某个字段 stream排序 倒序
假设您有一个包含多个对象的列表,每个对象都包含一个字段,您想按照该字段进行排序并进行倒序排列,可以使用以下代码:
```
List<Person> people = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Charlie", 20),
new Person("David", 35)
);
List<Person> sortedPeople = people.stream()
.sorted(Comparator.comparing(Person::getAge).reversed())
.collect(Collectors.toList());
```
在上述代码中,我们首先将Person对象列表转换为流,然后使用sorted()方法进行排序。通过Comparator.comparing()方法指定要按照哪个字段进行排序,然后使用reversed()方法将排序顺序反转为倒序。最后,我们使用collect()方法将排序后的流转换回List类型。
假设Person类具有以下定义:
```
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
```