Tôi muốn nhóm một Danh sách các đối tượng có chứa thuộc tính time
thành các khoảng thời gian 5 phút, tốt nhất là sử dụng các luồng và bộ sưu tập. Giải pháp duy nhất tôi có thể tìm thấy trên StackOverflow là tính toán bao nhiêu khoảng (danh sách con) tôi cần, thêm mọi đối tượng vào mỗi Danh sách này và lọc ra những đối tượng không phù hợp với khung thời gian tương ứng, không chính xác một giải pháp tốt đẹp.Làm thế nào để nhóm đối tượng trong một danh sách vào danh sách khác theo thuộc tính bằng cách sử dụng suối & Java 8?
(Bạn có thể tìm thấy những bài viết ở đây: How to group elements of a List by elements of another in Java 8)
Tôi nghĩ đến một cái gì đó tương tự như sau:
List<MyObject> list = new ArrayList<MyObject>();
.......
List<List<MyObject>> grouped = list.stream().collect(Collectors.groupingBy(obj -> obj.getTime()/intervalLength));
Điều này tất nhiên công việc doenst.
Tôi hy vọng rằng, với Java 8 & các tính năng của nó đang được sử dụng ngày càng nhiều, chúng ta có thể tìm ra giải pháp suting cho một vấn đề như vậy.
Kính trọng, Claas M.
EDIT: In the End, tôi đã sử dụng giải pháp @Harsh Poddar và chuyển bản đồ vào một danh sách liệt kê sử dụng
for(Map.Entry<Integer, List<MyObject>> entry:map.entrySet())
list.add(entry.getValue());
Lưu ý: Danh sách đã phải được sắp xếp sau đó.
Điều đó có hiệu quả, cảm ơn bạn! –