下面是一个示例代码,演示如何按自定义时间间隔对对象数组进行分组:
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ObjectArrayGrouping {
public static void main(String[] args) {
// 创建一个示例对象数组
List objectList = new ArrayList<>();
objectList.add(new MyObject("Object1", LocalDateTime.of(2022, 1, 1, 10, 0, 0)));
objectList.add(new MyObject("Object2", LocalDateTime.of(2022, 1, 1, 10, 30, 0)));
objectList.add(new MyObject("Object3", LocalDateTime.of(2022, 1, 1, 11, 0, 0)));
objectList.add(new MyObject("Object4", LocalDateTime.of(2022, 1, 1, 11, 30, 0)));
objectList.add(new MyObject("Object5", LocalDateTime.of(2022, 1, 1, 12, 0, 0)));
// 按自定义时间间隔对对象数组进行分组
Map> groupedMap = groupObjectsByTimeInterval(objectList, 30, ChronoUnit.MINUTES);
// 输出分组结果
for (Map.Entry> entry : groupedMap.entrySet()) {
System.out.println("Group " + entry.getKey() + ":");
for (MyObject obj : entry.getValue()) {
System.out.println(obj.getName());
}
System.out.println();
}
}
public static Map> groupObjectsByTimeInterval(List objectList, int interval, ChronoUnit unit) {
Map> groupedMap = new HashMap<>();
for (MyObject obj : objectList) {
LocalDateTime key = obj.getTimestamp().truncatedTo(unit);
groupedMap.putIfAbsent(key, new ArrayList<>());
groupedMap.get(key).add(obj);
}
return groupedMap;
}
public static class MyObject {
private String name;
private LocalDateTime timestamp;
public MyObject(String name, LocalDateTime timestamp) {
this.name = name;
this.timestamp = timestamp;
}
public String getName() {
return name;
}
public LocalDateTime getTimestamp() {
return timestamp;
}
}
}
在上面的示例中,我们创建了一个MyObject
类表示对象,具有名称和时间戳属性。我们使用LocalDateTime
类来表示时间戳。
groupObjectsByTimeInterval
方法接受一个对象列表,一个时间间隔和一个时间单位,并返回一个Map
,其中键为按时间间隔分组的时间戳,值为在该时间间隔内的对象列表。我们使用truncatedTo
方法将时间戳截断到指定的时间单位。
在示例中,我们使用30分钟的时间间隔对对象数组进行分组,并将结果打印输出。输出结果如下:
Group 2022-01-01T10:00:
Object1
Object2
Group 2022-01-01T11:00:
Object3
Object4
Group 2022-01-01T12:00:
Object5
根据时间间隔,对象1和对象2被分组在2022年1月1日的10:00之前,对象3和对象4被分组在11:00之前,而对象5被单独分组在12:00。
下一篇:按自定义时间间隔每天分组”