java 根据不同条件拆分list
时间: 2023-08-29 18:04:52 浏览: 54
根据不同条件拆分List可以使用Java 8的流(Stream)和Lambda表达式来实现。下面是一个示例代码,演示如何根据不同条件拆分List:
```java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
personList.add(new Person("Alice", 25));
personList.add(new Person("Bob", 30));
personList.add(new Person("Charlie", 35));
personList.add(new Person("David", 25));
personList.add(new Person("Eve", 30));
// 根据年龄分组
Map<Integer, List<Person>> ageGroupMap = personList.stream()
.collect(Collectors.groupingBy(Person::getAge));
System.out.println("按年龄分组:");
for (Map.Entry<Integer, List<Person>> entry : ageGroupMap.entrySet()) {
System.out.println("年龄:" + entry.getKey());
for (Person person : entry.getValue()) {
System.out.println(person.getName());
}
System.out.println();
}
// 根据姓名首字母分组
Map<Character, List<Person>> nameGroupMap = personList.stream()
.collect(Collectors.groupingBy(person -> person.getName().charAt(0)));
System.out.println("按姓名首字母分组:");
for (Map.Entry<Character, List<Person>> entry : nameGroupMap.entrySet()) {
System.out.println("姓名首字母:" + entry.getKey());
for (Person person : entry.getValue()) {
System.out.println(person.getName());
}
System.out.println();
}
}
public static 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;
}
}
}
```
在上面的示例代码中,我们创建了一个Person类,包含姓名和年龄两个属性。然后我们创建了一个Person列表,并根据不同的条件(年龄和姓名首字母)对列表进行拆分。
我们使用`stream()`方法将列表转换为流,然后使用`Collectors.groupingBy()`方法根据指定的条件进行分组。最后,我们遍历分组后的结果并进行打印输出。
注意:上述示例代码仅演示了根据年龄和姓名首字母进行拆分,你可以根据自己的需求修改条件和数据结构。