객체 타입으로 2차원 배열 만들기

김성수·2023년 10월 7일
0

Java

목록 보기
17/18

Create map 2D array

List<List<Map<Integer, Integer>>> map = new ArrayList<>();

            // 처음에 행 공간을 창출해줘야함. 인접리스트와 똑같음.
            for (int i = 0; i <= 11; i++) {
                map.add(new ArrayList<>());
            }

            // 그러면 이제 열 공간을 창출해줘야함
            // 아래 방식은 인접 리스트 방식인데, 인접 리스트 방식은 예를 들어 2번 정점과 연결된 정점이 3,4,5라고 가정하면
            // 2 : [3], [4], [5] <= 이런식으로 저장되는 방식임
            // 하지만 내가 원하는건 2차원 배열인데, 값이 Map으로 저장되는 것임
            // 따라서, 각 행마다 열을 창출해줘야함
//            for (int i = 0; i <= 11; i++) {
//                map.get(i).add(new HashMap<>());
//            }

            // 올바른 방식
            for (int i = 0; i <= 11; i++) {
                for (int j = 0; j <= 11; j++) {
                    map.get(i).add(new HashMap<>());
                }
            }
            
            // 조금 더 최적화한 방식
            for (int i = 0; i <= 11; i++) {
                // 행 자리를 먼저 창출하고
                List<Map<Integer, Integer>> rowList = new ArrayList<>();
                for (int j = 0; j <= 11; j++) {
                    // 해당 행에서 열 자리를 창출해주고
                    rowList.add(new HashMap<>());
                }
                // 해당 공간을 저장하는 방식
                map.add(rowList);
            }
            
            // 제대로 공간이 창출됐는지 확인
            for (int row = 0; row <= 10; row++) {
                for (int col = 1; col <= 10; col++) {
                    System.out.print(map.get(row).get(col).toString() + " ");
                }
                System.out.println();
            }

create List 2D array

            List<List<ArrayList<Integer>>> map = new ArrayList<>();

            for (int i = 0; i <= 10; i++) {
                map.add(new ArrayList<>());
            }

            for (int i = 0; i <= 10; i++) {
                for (int j = 0; j <= 10; j++) {
                    map.get(i).add(new ArrayList<>());
                }
            }
profile
깊이 있는 소프트웨어 개발자가 되고 싶습니다.

0개의 댓글