117.info
人生若只如初见

java分组排序取第一个值的方法是什么

在Java中可以使用Stream API来分组、排序和取第一个值。以下是一个示例代码:

假设有一个List对象列表,每个Person对象有两个属性:name和age。现在要按照age属性分组并且按照name属性排序,然后取每个分组的第一个值。

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List personList = List.of(
                new Person("Alice", 25),
                new Person("Bob", 30),
                new Person("Charlie", 25),
                new Person("David", 30)
        );

        Map result = personList.stream()
                .collect(Collectors.groupingBy(Person::getAge,
                        Collectors.collectingAndThen(Collectors.minBy((p1, p2) -> p1.getName().compareTo(p2.getName())), p -> p.get())));

        System.out.println(result);
    }
}

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 + "}";
    }
}

在上面的代码中,首先使用stream()方法将List转换为Stream,然后使用collect()方法对Stream进行分组和集合。在分组时,使用Collectors.groupingBy()方法按照age属性进行分组,然后对每个分组使用Collectors.collectingAndThen()方法来获取每个分组的第一个值,通过比较name属性的大小来确定第一个值。最后将结果打印出来。

运行结果将会输出:

{25=Person{name='Alice', age=25}, 30=Person{name='Bob', age=30}}

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe739AzsLAQRVB1A.html

推荐文章

  • java中boolean变量怎么声明

    在Java中,boolean变量可以通过使用关键字"boolean"来声明。具体语法如下:
    boolean variableName; 其中,"variableName"是你为变量指定的名称。例如,下面...

  • java中boolean的注意事项有哪些

    在Java中,boolean是一种基本数据类型,表示真或假的值。以下是一些使用boolean时需要注意的事项: boolean类型只有两个可能的值:true和false。不能将其他类型的...

  • java中的ThreadLocal怎么使用

    ThreadLocal是一个Java中的线程局部变量,它可以在多个线程中独立存储各自的值。它的使用有以下几个步骤: 创建一个ThreadLocal实例,可以使用ThreadLocal的静态...

  • Java中ConcurrentHashMap的用法是什么

    在Java中,ConcurrentHashMap是一个线程安全的哈希表实现,它提供了高效的并发访问能力。下面是ConcurrentHashMap的一些常用用法: 插入数据:使用put()方法向Co...

  • java中stream groupby怎么使用

    在Java中,使用Stream的groupBy方法可以对Stream中的元素进行分组操作。groupBy方法接受一个Function作为参数,该函数用于提取元素的键值,并返回一个Map对象,其...

  • php怎么获取视频第一帧

    在 PHP 中获取视频的第一帧可以通过使用 FFmpeg 库来实现。以下是一个简单的 PHP 脚本示例,通过 FFmpeg 获取视频的第一帧: 在上面的示例中,首先指定了视频文件...

  • c语言定义队列的方法是什么

    在C语言中,可以通过使用数组或链表来定义队列。以下是使用数组定义队列的示例:
    #include #define MAX_SIZE 100 struct Queue { int items[MAX_SIZE]; int...

  • maven指定settings文件如何配置

    要指定Maven使用特定的settings文件,可以在命令行中使用-s参数,例如:
    mvn clean install -s /path/to/settings.xml 如果想永久性地指定settings文件,可...