java list stream 找到最大值及对应的时间
时间: 2023-09-12 15:09:41 浏览: 158
假设你有一个包含时间戳和值的列表,你可以使用Java 8中的Stream API来找到最大值及对应的时间戳。以下是一个示例代码:
```java
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class Main {
public static void main(String[] args) {
// 创建一个包含时间戳和值的列表
List<Data> data = new ArrayList<>();
data.add(new Data(LocalDateTime.now().minusMinutes(10), 20));
data.add(new Data(LocalDateTime.now().minusMinutes(8), 30));
data.add(new Data(LocalDateTime.now().minusMinutes(6), 25));
data.add(new Data(LocalDateTime.now().minusMinutes(4), 35));
data.add(new Data(LocalDateTime.now().minusMinutes(2), 40));
data.add(new Data(LocalDateTime.now(), 32));
// 使用Stream API找到最大值及对应的时间戳
Data maxData = data.stream()
.max(Comparator.comparing(Data::getValue))
.orElseThrow(() -> new RuntimeException("List is empty"));
// 输出结果
System.out.println("Max value: " + maxData.getValue());
System.out.println("Timestamp: " + maxData.getTimestamp());
}
}
class Data {
private LocalDateTime timestamp;
private int value;
public Data(LocalDateTime timestamp, int value) {
this.timestamp = timestamp;
this.value = value;
}
public LocalDateTime getTimestamp() {
return timestamp;
}
public int getValue() {
return value;
}
}
```
在这个示例中,我们首先创建了一个包含时间戳和值的列表。然后使用Stream API的max方法找到最大值及对应的时间戳。我们通过传递一个比较器来告诉max方法使用哪个属性来比较。最后,我们使用orElseThrow方法来处理列表为空的情况。
阅读全文