Làm thế nào để group by

Em có ArrayList Apartment(id,name,floor,direction)
làm sao em có nhóm lại Apartment có cùng floor được nhỉ.
ai cho em xin keyword java với ạ

for hết list rồi lấy ra thôi @@ Không thì sử dụng mảng hai chiều, HashMap nếu muốn lấy ra luôn.

1 Like

arrayList.stream().filter(x -> x.floor == cái gì đó) hoặc không phải là điều kiện == thì điều kiện khác bạn tự biết cách viết thôi.

2 Likes

apartmentList.stream().collect(Collectors.groupingBy(Apartment::getFloor))

3 Likes

em lấy ra danh sách apartment đuợc theo direction giờ em phải lấy theo floor ấy ạ.

"tây nam": [
            {
                "name": "Căn 1",
                "list": null,
                "idApartment": 64,
                "idBuilding": 0,
                "idApartmentType": 0,
                "code": null,
                "floor": "1",
                "sellPrice": "1000000000",
                "note": null,
                "image": null,
                "status": 2,
                "direction": "tây nam"
            },
            {
                "name": "Hitex",
                "list": null,
                "idApartment": 88,
                "idBuilding": 0,
                "idApartmentType": 0,
                "code": null,
                "floor": "19",
                "sellPrice": "1000000",
                "note": null,
                "image": null,
                "status": 2,
                "direction": "tây nam"
            },
            {
                "name": "Hitex",
                "list": null,
                "idApartment": 96,
                "idBuilding": 0,
                "idApartmentType": 0,
                "code": null,
                "floor": "8",
                "sellPrice": "1000000000000",
                "note": null,
                "image": null,
                "status": 2,
                "direction": "tây nam"
            }
        ]

Dữ liệu của bạn là chuỗi json, trước hết cần chuyển JSON về Java Object (có thể sử dụng thư viện Gson hoặc Jackson). Sau đó loop qua danh sách và thực hiện group by:

  • Có thể sử dụng Map<String, List> với String là key bạn muốn group by, và List là danh sách các Apartment ứng với key.
  • Một cách khác đơn giản hơn là sử dụng Collectors.groupBy() trong Java 8.

Bạn có thể tham khảo các link bên dưới:


1 Like

dữ liệu kia em in ra cho dễ nhìn thôi ạ… cái trên là em đã Map<String,list> theo key direction rồi ạ…
nhưng e muốn duyệt tiếp cái trên theo floor mà nó lại lỗi

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?