티스토리 뷰

1. 아래의 출력이 나오도록 만드시오.

public class HashPerson {
	public static void main(String[] args) {
		HashSet<Person> hSet = new HashSet<Person>();
		
		hSet.add(new Person("LEE", 10));
		hSet.add(new Person("LEE", 10));
		hSet.add(new Person("PARK", 35));
		hSet.add(new Person("PARK", 35));

		System.out.println("저장된 데이터 수: " + hSet.size());
		//System.out.println(hSet);
	}
}

/*
저장된 데이터 수: 2
[LEE(10세), PARK(35세)]
*/

 

방법1. a.k.a왠지 있어보이는 코드

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
import java.util.HashSet;
 
class Person{
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.age =age;
        this.name =name;
    }
    
    @Override
    public String toString() {
        return String.valueOf(name +"(" +age +"세)");
    }
    
    @Override
    public int hashCode() {
        return age % 4;
    }
    @Override
    public boolean equals(Object obj) {
        
        if(obj instanceof Person) { //형변환 가넝
            Person person = (Person) obj;
            if(person.name.equals(((Person) obj).name))
                return true;
        
        } return false;
 
        
    }
    
}
 
public class HashPerson {
    public static void main(String[] args) {
                HashSet<Person> hSet = new HashSet<Person>();
                
                hSet.add(new Person("LEE"10));
                hSet.add(new Person("LEE"10));
                hSet.add(new Person("PARK"35));
                hSet.add(new Person("PARK"35));
 
                System.out.println("저장된 데이터 수: " + hSet.size());
                System.out.println(hSet);
    
 
    }
 
}
cs

 

 

 

 

선생님 방법

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
import java.util.HashSet;
 
class Person{
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.age =age;
        this.name =name;
    }
    
    @Override
    public String toString() {
        return String.valueOf(name +"(" +age +"세)");
    }
    
    @Override
    public int hashCode() {
        return age / 10;
    }
    @Override
    public boolean equals(Object obj) {
        
    
        if(this.name.equals(((Person)obj).name) && 
                age ==((Person)obj).age)
                return true;
        else
            return false
        
        
    }
        
}
 
public class HashPerson {
    public static void main(String[] args) {
                HashSet<Person> hSet = new HashSet<Person>();
                
                hSet.add(new Person("LEE"10));
                hSet.add(new Person("LEE"10));
                hSet.add(new Person("PARK"35));
                hSet.add(new Person("PARK"35));
 
                System.out.println("저장된 데이터 수: " + hSet.size());
                System.out.println(hSet);
    
 
    }
 
}
 
 
cs

 

 

 

 


2. 아래와 같이 출력이 나오도록 프로그래밍을 하시오.

HashSet<Num> set = new HashSet<>();
        set.add(new Num(7799));
        set.add(new Num(9955));
        set.add(new Num(7799));

        System.out.println("인스턴스 수: " + set.size());

        for(Num n : set)
            System.out.print(n.toString() + '\t');

        System.out.println();

/*
====출력
인스턴스 수: 2
7799	9955
*/

 

 

 


3.TreeSet 과 HashSet 의 차이는?

 

TreeSet은 오름차순으로 저장

HashSet은 오름차순으로 저장하지 않음. 

 

추가로 Hash는 분류(=집합=군집)라고도 한다.

cf) 해쉬태그 # : 그 단어로 집합을 만들어서 search

 

 

 

 


4.아래를 프로그래밍 하시오.

하나의 학생 정보를 나타내는 Student 클래스에는 
이름, 학과, 학번, 학점 평균을 저장하는 필드가 있다.

(1) 학생마다 Student 객체를 생성하고 
4명의 학생 정보를 ArrayList<Student> 컬렉션에 저장한 후에, 
ArrayList<Student>의 모든 학생(4명) 정보를 출력하고 
학생 이름을 입력받아 해당 학생의 학점 평균을 출력하는 프로그램을 작성하라.

학생 이름, 학과, 학번, 학점평균 입력하세요.

>> 황기태, 모바일, 1, 4.1
>> 이재문, 안드로이드, 2, 3.9
>> 김남윤, 웹공학, 3, 3.5
>> 최찬미, 빅데이터, 4, 4.25

----------------------------------

이름: 황기태

학과: 모바일

학번: 1

학점평균: 4.1

----------------------------------

이름: 이재문

학과: 안드로이드

학번: 2

학점평균: 3.9

----------------------------------

이름: 김남윤

학과: 웹공학

학번: 3

학점평균: 3.5

----------------------------------

이름: 최찬미

학과: 빅데이터

학번: 4

학점평균: 4.25

----------------------------------

학생 이름 >> 최찬미

최찬미, 빅데이터, 4, 4.25

학생 이름 >> 이재문

이재문, 안드로이드, 2, 3.9

학생 이름 >> 그만

 

 

 

 



5. 개별 진척도 오늘 못한거 정리 해 주세요.

 

'면접준비 > KOSMO 허쌤 숙제' 카테고리의 다른 글

학습정리-11-17  (0) 2021.11.18
학습정리-11-10  (0) 2021.11.10
학습정리-11-08  (0) 2021.11.08
학습정리-11-05  (0) 2021.11.06
학습정리-11-04  (0) 2021.11.04
댓글