hutool5.8.16 List保存的是对象,需要根据对象的字段分类
时间: 2023-12-14 15:39:38 浏览: 74
可以使用Java 8的流式操作和Collectors工具类来实现根据对象的字段分类。示例代码如下:
假设有一个Person类,有两个字段name和age:
```java
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;
}
}
```
现在有一个List<Person>,需要根据age字段进行分类:
```java
List<Person> personList = new ArrayList<>();
personList.add(new Person("Tom", 20));
personList.add(new Person("Mary", 22));
personList.add(new Person("John", 21));
personList.add(new Person("Lucy", 20));
```
可以使用stream()方法获取流,然后使用Collectors.groupingBy()方法根据age字段进行分组:
```java
Map<Integer, List<Person>> ageMap = personList.stream().collect(Collectors.groupingBy(Person::getAge));
```
上面的代码将List<Person>按照age字段进行了分组,并且返回了一个Map<Integer, List<Person>>,其中key为age字段的值,value为该age值对应的Person对象列表。
如果需要将结果按照age字段排序,可以在groupingBy()方法的第二个参数传入一个Comparator对象,例如:
```java
Map<Integer, List<Person>> ageMap = personList.stream().collect(Collectors.groupingBy(Person::getAge, TreeMap::new, Collectors.toList()));
```
这样返回的Map<Integer, List<Person>>会按照age字段进行排序。
阅读全文