Array [“bắc”,“nam”,“đông”,“tây”]
Array [“nam”,“tây”]
em có 2 Array như trên… có cách nào để so sách array 2 với array 1 nếu thiếu cái nào thì sẽ add thêm vào array 2 ko ạ
kết quả em mong muốn kiểu như này [null,null,null,null,5,6,null,null]
public BuildingDao findAllApartment(int idProject, int idSector) {
BuildingDao building = new BuildingDao();
// lây mảng phàn tử cần trong db
List<Object[]> result = entityManager.createNativeQuery("SELECT DISTINCT a.id_apartment,a.floor,a.direction,a.sell_price,a.`status`,a.`name`,a.area from tbl_apartment a,tbl_project p,tbl_sector s,tbl_building b where a.id_building=b.id_building and b.id_sector=s.id_sector and p.id_project=s.id_project and p.id_project=:idProject and s.id_sector=:idSector ORDER BY a.direction").setParameter("idProject", idProject).setParameter("idSector", idSector).getResultList();
List<Apartment> list = new ArrayList<>();
// dổ dữ lệu vào list Apartment
for (Object[] obj : result) {
Apartment apartment = new Apartment();
apartment.setIdApartment(Integer.parseInt(obj[0].toString()));
apartment.setFloor(Integer.parseInt(obj[1].toString()));
apartment.setDirection(String.valueOf(obj[2]));
apartment.setSellPrice(String.valueOf(obj[3]));
apartment.setStatus(Integer.parseInt(obj[4].toString()));
apartment.setName(String.valueOf(obj[5]));
apartment.setArea(String.valueOf(obj[6]));
list.add(apartment);
}
Map<String, List<Apartment>> sult = list.stream().collect(groupingBy(Apartment::getDirection));
// đổ dữ liệu ra kq
//lấy danh sach direction
List<String> direction = new ArrayList<>(sult.keySet());
System.out.println(direction);
building.setDirections(direction);
building.setNumberA(direction);
// lay du lieu theo floor
Map<Integer, List<Apartment>> map = list.stream().collect(groupingBy(Apartment::getFloor));
List<Floor> floors = listFloor(map);
System.out.println("lissta"+floors);
for (int a=0;a<floors.size();a++) {
//mot arrray rong de chen
List<Apartment> ass = new ArrayList<>();
System.out.println("a "+a);
// lay list floor
Floor ab= (Floor) floors.get(a);
// array list lay duoc tu database
List<Apartment> apartmentList=add(ab);
System.out.println(apartmentList);
List<String> aa=new ArrayList<>();
Map<String, Boolean> elementInArrB = new HashMap<>();
for (int is = 0; is < apartmentList.size(); is++) {
//lay tung direction trong list apartmentlist
aa.add(apartmentList.get(is).getDirection());
}
System.out.println("mang 2" + aa);
for(int i = 0; i < aa.size(); i++) {
elementInArrB.put(aa.get(i), true);
}
System.out.println("element"+elementInArrB);
// System.out.println("as "+apartment);
//duyet lay tung direction trong list direction o tren
for (int i = 0; i < direction.size(); i++) {//duyet mang 1
if (elementInArrB.containsKey(direction.get(i)))
ass.add();
else
ass.add(addApartmeent());
}
ab.setList(ass);
}
building.setFloors(floors);
Map<String,List<Apartment>> map2=list.stream().collect(groupingBy(Apartment::getArea));
ArrayList<String> list2=new ArrayList<>(map2.keySet());
building.setAres(list2);
return building;
}