Làm sao để convert values key trong map

em lấy được key đông tây nam bắc rồi… nhưng trong values thì nó lại là 1 map khác
làm sao để lấy được key với values trong map thứ 2 kia

Map<String, Map<String, List<Apartment>>> sult = list.stream()
    .collect(
        groupingBy(
            Apartment::getDirection,
            groupingBy(Apartment::getFloor)));

List<String> direction = new ArrayList<>(sult.keySet());
building.setDirections(direction);

Bạn đưa kiểu này chắc sẽ không ai giải đáp nổi

1 Like

em sửa lại như vậy đã rõ ràng hơn chưa ạ

Cố lên chứ bác. Khó mới hỏi, chắc mới nhập môn.

Thằng em nó đưa cho có cái đoạn code thế kia sao biết ẻm đang làm gì? Sai Chỗ náo chứ?

1 Like

Em cho xem hết đoạn code em set và get xem?

1 Like
BuildingDao building = new BuildingDao();
    List<Object[]> result = entityManager.createNativeQuery("SELECT a.id_apartment,a.floor,a.direction,a.sell_price,a.`status`,a.`name` 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 and b.id_building=:idBuilding  ORDER BY a.floor").setParameter("idProject", idProject).setParameter("idSector", idSector).setParameter("idBuilding", idBuilding).getResultList();
    List<Apartment> list = new ArrayList<>();
    for (Object[] obj : result) {
        Apartment apartment = new Apartment();
        apartment.setIdApartment(Integer.parseInt(obj[0].toString()));
        apartment.setFloor(String.valueOf(obj[1]));
        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]));
        list.add(apartment);
    }

Map<String, Map<String, List<Apartment>>> sult=list.stream().collect(groupingBy(Apartment::getDirection, groupingBy(Apartment::getFloor)));
    List<String> direction=new ArrayList<>(sult.keySet());
    building.setDirections(direction);
    System.out.println(direction);

đây là tất cả những gì e đã làm để lấy được ra thế kia

vấn đề là bạn muốn làm gì, mình chưa hiểu lắm về câu hỏi của bạn

chỗ Map<String,List> nó là values của cái map ngoài… em muốn nó thành một map để e có thể keyset với values cho nó để em hiện nó thành

{
  "name" : 7,
  "row" : "
    {
      com.hitex.mgland.model.Apartment@bc4db42,
      com.hitex.mgland.model.Apartment@3c6eff7e
    }
  "
}

ko biết có thể convert được ko ạ

Lần sau nếu post code, SQL hay JSON, indentation trước cho dễ đọc.
Bạn để 1 hàng vậy thì không ai đọc đâu.

Bạn có thể tham khảo những lần chỉnh sửa của mình cho bài của bạn.

1 Like

dạ… tại em ép vào mà nó chỉ được dòng đầu

Bạn có thể mô tả rõ hơn output mong muốn không? Key và Value bạn mong muốn là gì?

Nhưng cơ bản chẳng hiểu bạn muốn gì!?

  • Bạn muốn in com.hitex.mgland.model.Apartment ra JSON luôn?
  • Bạn muốn đọc dữ liệu của com.hitex.mgland.model.Apartment?
  • Muốn gom hết com.hitex.mgland.model.Apartment thành 1 (List)?

key sẽ là : 7
values: sẽ là

{
  com.hitex.mgland.model.Apartment@bc4db42,
  com.hitex.mgland.model.Apartment@3c6eff7e
}

em muốn gom từng com.hitex.mgland.model.Apartment thành list theo từng “name” : 7 đấy ạ

7 ở đây nghĩa là gì? Lấy từ đâu ra?
List Apartment kia là như nào với số 7 kia

dự liệu em lấy được là như thế này.
em setkey để lấy được tây bắc rồi ạ
nhưng cái 7 giống như cái 12 ở trên đó ạ…
cái 7 kia là cái floor có các Apartment đó ạ

Tức là muốn chuyển từ

{
    7 = [
    com.hitex.mgland.model.Apartment@bc4db42,
    com.hitex.mgland.model.Apartment@3c6eff7e
    ]
}

Thành

{
  "name" : 7,
  "row" : "
    {
      com.hitex.mgland.model.Apartment@bc4db42,
      com.hitex.mgland.model.Apartment@3c6eff7e
    }
  "
}

???

đúng rồi anh ơi… có thể ko a

Có, rất đơn giản. Thực ra code cũ của bạn đã có lời giải cho bạn rồi, để ý xíu là thấy

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