[Java] - HashMap과 List를 같이 사용하기

어떠한 웹페이지의 게시판에는 한페이지마다  10개의 글이 올수 있고 각 글에는 게시글 제목, 내용, 작성자가 있으며

페이지마다 총페이지수와 총 게시글수 그리고 검색어를 띄워준다고 했을 때 다음과 같이 클래스를 구성할 수 있다.

 

 

먼저 Board(게시판) 클래스가 다음과 같이 구성되어 있다면 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package HashMap;
 
public class Board {
    private String title;
    private String contents;
    private String writer;
 
    public String getTitle() {
        return title;
    }
 
    public void setTitle(String title) {
        this.title = title;
    }
 
    public String getContents() {
        return contents;
    }
 
    public void setContents(String contents) {
        this.contents = contents;
    }
 
    public String getWriter() {
        return writer;
    }
 
    public void setWriter(String writer) {
        this.writer = writer;
    }
 
}
 
cs

HashMap 구조는 다음과 같이 작성되어야 할 것이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package HashMap;
 
import java.util.ArrayList;
import java.util.List;
import java.util.*;
 
public class MapAndList {
 
    public static void main(String[] args) {
        //글 10개 담을 리스트 객체 생성
        
        List<Board> list = new ArrayList<Board>();
        
        // 객체를 10개 생성해서 리스트에 추가
        for(int i=0; i<10; i++) {
            Board vo = new Board();
            vo.setTitle("제목" + i);
            vo.setContents("내용"+i);
            vo.setWriter("작성자"+i);
            list.add(vo);
        }
                
        //map 객체 생성
        Map<String, Object> map = new HashMap<String, Object>();
        
        //목록추가
        map.put("list", list);
        //검색어추가
        map.put("searchword""검색어");
        //총갯수 추가
        map.put("totalcount"100);
        //총페이지수 추가
        map.put("totalpage"10);
 
        
        System.out.println(map.get("list").getClass());
        System.out.println(map.get("totalpage").getClass());
        System.out.println(map.get("searchword").getClass());
 
        
        View(map);
    }
    
    
    // map 객체를 매개변수로 받아서 
    // 총갯수 : 100개
    // 총페이지수 : 10페이지
    // 검색어 : 검색어
    // 제목 0  내용0 작성자 0
    // ...
    // 제목9 내용9 작성자9
 
    static void View(Map m) {
        
        //출력
        System.out.println("총갯수 : " +m.get("totalcount"));
        System.out.println("총페이지 : "+m.get("totalpage"));
        System.out.println("검색어 : "+m.get("searchword"));
        
        ArrayList<Board> list = (ArrayList<Board>) m.get("list");
        
        for(Board vo : list) {
            System.out.println(vo.getTitle() + " " + vo.getContents() + " " + vo.getWriter());
        }
    }
}
 
cs

(출력결과)

 

위에서 보이는 것처럼 key, value 저장구로를 가지면서

value에는 ArrayList, Integer, String 등 다양한 데이터 타입이 올 수 있다.

 

HashMap 중 key가 'list' 인 녀석의 value가 ArrayList 타입이기 때문에

10개 작성된 글을 이 ArrayList에 담아서 하나의 key, value에 넣을 수 있게 된다.

 

이외에도 자신이 커스터마이징한 클래스의 데이터타입 또한 value가 될 수 있다.