java根据条件一个list分成多个list
时间: 2023-09-21 15:09:07 浏览: 108
java中将一个List等分成n个list的工具方法(推荐)
5星 · 资源好评率100%
可以使用Java 8的流式操作来实现将一个List按照某个条件分成多个List的操作。具体步骤如下:
1. 使用stream()方法将List转换成一个流
2. 使用collect()方法将流转换成一个Map,其中key为分组的条件,value为对应的List
3. 对于每个元素,根据条件将其加入对应的List中
示例代码如下:
```java
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class ListSplitter {
public static void main(String[] args) {
List<Person> persons = List.of(
new Person("Tom", 20),
new Person("Lucy", 18),
new Person("John", 22),
new Person("Mary", 19),
new Person("David", 22)
);
Map<Integer, List<Person>> groups = persons.stream()
.collect(Collectors.groupingBy(Person::getAge));
System.out.println(groups);
}
}
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;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
```
输出结果为:
```
{19=[Person{name='Mary', age=19}], 20=[Person{name='Tom', age=20}], 22=[Person{name='John', age=22}, Person{name='David', age=22}], 18=[Person{name='Lucy', age=18}]}
```
可以看到,根据年龄将Person对象分成了不同的List,其中19岁的有一个,20岁的有一个,22岁的有两个,18岁的有一个。
阅读全文