Java list 方法分组

在 Java 中,可以使用 List 的 stream() 方法来对列表进行操作。要按照特定条件将元素分组,可以使用 Collectors.groupingBy() 方法。

下面是一个示例代码,展示了如何根据某个属性值将 List 中的元素分组:

import java.util.*;
import java.util.stream.Collectors;
 
public class Main {
    public static void main(String[] args) {
        // 创建一个包含多个 Person 对象的 List
        List personList = Arrays.asList(
                new Person("Alice", "Female"),
                new Person("Bob", "Male"),
                new Person("Charlie", "Male"),
                new Person("Dave", "Male")
        );
        
        // 按照 gender(性别)字段进行分组
        Map> groupedPersons = personList.stream()
                .collect(Collectors.groupingBy(Person::getGender));
                
        // 输出结果
        for (Map.Entry> entry : groupedPersons.entrySet()) {
            System.out.println("Group by Gender: " + entry.getKey());
            
            for (Person person : entry.getValue()) {
                System.out.println("\t" + person);
            }
            
            System.out.println();
        }
    }
}
 
class Person {
    private String name;
    private String gender;
    
    public Person(String name, String gender) {
        this.name = name;
        this.gender = gender;
    }
    
    public String getName() { return name; }
    public String getGender() { return gender; }
    
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", gender='" + gender + '\'' +
                '}';
    }
}

运行上述代码会得到类似于以下输出:

Group by Gender: Male
    Person{name='Bob', gender='Male'}
    Person{name='Charlie', gender='Male'}
    Person{name='Dave', gender='Male'}
 
Group by Gender: Female
    Person{name='Alice', gender='Female'}

你可能感兴趣的:(java,list,windows)