java中 我有一个List的对象对象中有一个属性是Timestamp类型的时间戳 我想将这些用户通过这个时间戳来进行分类 分类规则为 0h-2h的为一组,2h-4h为一组直到22h-24h
时间: 2024-09-27 15:12:09 浏览: 27
在Java中,你可以按照你的需求对List<Timestamp>类型的元素进行分类。首先,你需要创建一个方法或者循环遍历这个列表,然后计算每个Timestamp对象的时间差,将其分为不同的时间段。这里是一个简单的示例:
```java
import java.time.LocalDateTime;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class TimestampClassifier {
public static List<List<LocalDateTime>> classifyByHour(List<Timestamp> timestamps) {
List<List<LocalDateTime>> result = new ArrayList<>();
for (int i = 0; i < 22; i += 2) {
result.add(new ArrayList<>());
// 获取开始时间和结束时间
LocalDateTime startTime = LocalDateTime.of(LocalDate.now(), LocalTime.of(i, 0));
LocalDateTime endTime = LocalDateTime.of(LocalDate.now(), LocalTime.of(i + 1, 59));
// 使用Stream API过滤并添加到对应组
result.get(i).addAll(timestamps.stream()
.filter(t -> t.getValue().after(startTime) && t.getValue().before(endTime))
.map(Timestamp::getValue)
.collect(Collectors.toList()));
}
return result;
}
// 假设Timestamp是一个内部类,包含一个LocalDateTime的值
private static class Timestamp {
private LocalDateTime value;
// 省略getter和setter...
}
}
```
在这个例子中,`classifyByHour`方法会返回一个二维列表,每个子列表包含对应时间段内的Timestamp对象。
阅读全文