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 ạ
Làm thế nào để group by
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