본문 바로가기
✨ Java/컬렉션 프레임워크(CollectionFramework)

자바(JAVA) - 컬렉션프레임워크 List와 Map 같이쓰기

by 환풍 2023. 2. 15.
728x90

 

 

Student

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
package map;
 
public class Student {
    private int stuNum;
    private String name;
    private int score;
    
    public Student(int stuNum, String name, int score) {
        this.stuNum = stuNum;
        this.name = name;
        this.score = score;
    }
 
    public int getStuNum() {
        return stuNum;
    }
 
    public void setStuNum(int stuNum) {
        this.stuNum = stuNum;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public int getScore() {
        return score;
    }
 
    public void setScore(int score) {
        this.score = score;
    }
 
    @Override
    public String toString() {
        return "Student{" +
                "stuNum=" + stuNum +
                ", name='" + name + '\'' +
                ", score=" + score +
                '}';
    }
}
 
cs

변수 stuNum, name, score를 각각 지정하고, 매개변수를 받는 생성자를 만들어주었다.

이후 세터와 게터, toString( ) 메소드를 만들었다.

StuList2

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package map;
 
import java.util.*;
 
public class StuList2 {
    public static void main(String[] args) {
        //Map에 학생들의 정보를 저장.
        // key - 반이름, value = 해당 반에 소속된 학생들.
        Map<String , List<Student>> map = new HashMap<>();
 
        // 1반에 소속된 학생 3명 생성
        Student s1 = new Student(1,"김자바 ",80);
        Student s2 = new Student(2,"박자바 ",90);
        Student s3 = new Student(3,"이자바 ",100);
 
        List<Student> list1= new ArrayList<>();
        list1.add(s1);
        list1.add(s2);
        list1.add(s3);
        
        map.put("자바반",list1);
        
        Student s4 = new Student(5,"김캐드"85);
        Student s5 = new Student(6,"박캐드"95);
        Student s6 = new Student(7,"이캐드"25);
 
        List<Student> list2 = new ArrayList<>();
        list2.add(s4);
        list2.add(s5);
        list2.add(s6);
 
        map.put("캐드반", list2);
 
        // 1 .모든 반의 반이름과 각 반에 소속된 학생 수 출력.
        Set<String> keySet = map.keySet();  // 자바반, 캐드반 두개나옴
        for(String key : keySet )  // keySey - 반이름들,
        {
            System.out.println("반이름 : " + key + " / 학생 수  : " +  map.get(key).size());
        }
        // 2. 자바반에 소속된 학생들의 평균 점수 추렭
        double avg = 0;
        int num = 0;
        for(int i=0; i<map.get("자바반").size(); i++)
        {
 
            num += map.get("자바반").get(i).getScore() ;
        }
        avg = (double)num / map.get("자바반").size();
        System.out.println(avg);
 
        // 3. 캐드반 학생 중 점수가 80점 이상인 학생의 모든 정보 출력
        for(int i=0; i<map.get("캐드반").size(); i++)
        {
            if(map.get("캐드반").get(i).getScore() >= 80)
            {
                System.out.print(list2.get(i) + " ");
            }
 
        }
        System.out.println();
 
        // 4. 모든 학생 중 점수가 가장 높은 학생의 학번 출력.
        //map에 저장한 반 갯수만큼 반복
        //classNames : 자바반, 캐드반
        int maxScore = 0// 최고점수
        int maxStuNum = 0// 최고점수를 지닌 학생의 학번.
        Set<String> classNames = map.keySet();
        for(String className : classNames)   // 반을 봄.
        {
            for( Student stu : map.get(className) ) // 그 반에있는 학생들의 수만큼 반복.
            {
                if(stu.getScore() > maxScore)
                {
                    maxScore = stu.getScore();
                    maxStuNum = stu.getStuNum();
                }
            }
        }
 
        System.out.println("최고점을 지닌 학번 : " + maxStuNum);
 
    }
}
 
cs

 

반응형

댓글