JAVA - 10

Date:

카테고리:

태그:

img

ArrayListEx02.java

위의 코드에서 list1list2ArrayList<Integer> 객체로 정의되고, 각각의 리스트에 값들을 추가합니다.

  • 차집합(cha) 계산:
    • 우선 cha 리스트에 list1의 모든 값들을 추가합니다.
    • 그 후, list2에 포함된 값들을 cha 리스트에서 제거합니다. 이렇게 하면 cha 리스트에는 list1에만 포함된 값들이 남게 됩니다.
  • 교집합(kyo) 계산:
    • kyo 리스트에 list1의 모든 값들을 추가합니다.
    • 이후, cha 리스트에 포함된 값들을 kyo 리스트에서 제거합니다. 이렇게 하면 kyo 리스트에는 list1list2에 모두 포함된 값들이 남게 됩니다.
  • 합집합(hap) 계산:
    • 우선 hap 리스트에 cha 리스트의 모든 값들을 추가합니다.
    • 그리고 나서 list2에 있는 값들을 중복 없이 hap 리스트에 추가합니다. 이렇게 하면 hap 리스트에는 list1list2의 모든 값들이 중복 없이 포함됩니다.

마지막으로, System.out.println을 사용하여 차집합, 교집합, 합집합을 출력합니다.

출력 결과

차집합 : [1, 2]   / (list1 - list2)
교집합 : [3, 4]
합집합 : [1, 2, 3, 4, 5, 6]

Bag_Test.java

제너릭 클래스 BagBag_Test 클래스를 포함하고 있습니다.

Bag 클래스는 제너릭 타입 T를 사용하여 구현되었습니다. 이 클래스는 thing이라는 필드를 가지고 있으며, 이 필드는 T 타입의 객체를 저장합니다. 생성자와 getter, setter 메서드를 통해 thing 필드에 접근하고 조작할 수 있습니다. showType() 메서드는 thing에 저장된 객체의 타입을 출력합니다.

Bag_Test 클래스에서는 Bag 클래스를 테스트하는 예제가 포함되어 있습니다. Bag<Book> 객체 bag를 생성하여 Book 객체를 저장하고, Bag<PencilCase> 객체 bag2를 생성하여 PencilCase 객체를 저장하며, Bag<NoteBook> 객체 bag3를 생성하여 NoteBook 객체를 저장합니다. 각 Bag 객체의 showType() 메서드를 호출하여 해당 객체에 저장된 타입을 출력합니다.

이 코드는 제너릭을 활용하여 다양한 타입을 저장하고 관리하는 Bag 클래스를 구현하고, 이를 테스트하는 예제를 제공합니다.


BuyScenario.java

상품 구매 시나리오를 나타내는 예제입니다.

먼저, Product 클래스는 상품을 나타내는 클래스로 가격(price)과 보너스 포인트(bonusPoint)를 멤버 변수로 가지고 있습니다. 가격을 인자로 받는 생성자와 기본 생성자가 정의되어 있습니다.

Tv, Computer, Audio 클래스는 Product 클래스를 상속받은 클래스로, 각각 TV, 컴퓨터, 오디오를 나타냅니다. 각 클래스는 상품의 가격을 설정하기 위해 super 키워드를 사용하여 부모 클래스의 생성자를 호출합니다. toString() 메서드를 오버라이딩하여 객체를 문자열로 표현하는 기능을 추가합니다.

Buyer 클래스는 구매자를 나타내는 클래스로 소유 금액(money), 보너스 점수(bonusPoint), 그리고 장바구니(cart)를 멤버 변수로 가지고 있습니다. buy() 메서드는 상품을 구매하는 기능을 구현하며, 구매 시 소유 금액을 차감하고 보너스 점수를 증가시키며, 장바구니에 상품을 추가합니다. summary() 메서드는 구매한 물품에 대한 정보를 요약해서 출력하는 기능을 구현합니다.

BuySenario 클래스는 위에서 정의한 클래스들을 활용하여 실제로 상품을 구매하는 시나리오를 실행하는 메인 클래스입니다. Buyer 객체를 생성한 후 buy() 메서드를 호출하여 TV, 컴퓨터, 오디오를 순서대로 구매하고, summary() 메서드를 호출하여 구매한 물품의 총 금액과 목록을 출력합니다.

이 코드는 객체 지향 프로그래밍의 상속과 다형성을 활용하여 상품 구매 시나리오를 구현한 예제입니다.

출력결과

Tv / 구입하셨습니다.
Computer / 구입하셨습니다.
Audio / 구입하셨습니다.
구입하신 물품의  금액은 350만원입니다.
구입하신 제품은 Tv, Computer, Audio 입니다.

KeyValue.java

KeyValue<Key, Value>라는 제네릭 클래스를 정의하고, 이를 활용하는 예제입니다.

KeyValue 클래스는 KeyValue라는 제네릭 타입 매개변수를 가지며, private으로 선언된 keyvalue 필드를 갖습니다. 각각의 필드에 접근하기 위한 getKey(), setKey(), getValue(), setValue() 메서드가 정의되어 있습니다.

Ex_04_01 클래스의 main 메서드에서는 KeyValue 클래스를 다양한 타입으로 인스턴스화하여 사용하는 예제가 제시되어 있습니다.

첫 번째로, KeyValue<String, Integer> 타입의 kv1 객체를 생성하고, setKey()setValue() 메서드를 사용하여 “사과”와 1000이라는 값을 설정합니다. 그리고 getKey()getValue() 메서드를 통해 각각의 값을 가져와서 출력합니다.

두 번째로, KeyValue<Integer, String> 타입의 kv2 객체를 생성하고, setKey()setValue() 메서드를 사용하여 404와 “Not Found (요청한 페이지를 찾을 수 없습니다.)”라는 값을 설정합니다. 마찬가지로 getKey()getValue() 메서드를 통해 값을 가져와서 출력합니다.

세 번째로, KeyValue<String, Void> 타입의 kv3 객체를 생성하고, setKey() 메서드를 사용하여 “키값만 사용”이라는 값을 설정합니다. getValue() 메서드는 Void 타입을 반환하므로 값을 가져올 수 없지만, getKey() 메서드를 통해 “키값만 사용”을 출력합니다.

이를 실행하면 각각의 KeyValue 객체에 설정한 값을 출력하는 결과가 나타납니다.

출력결과

key : 사과  // value : 1000
key : 404  // value : Not Found (요청한 페이지를 찾을 수 없습니다.)
Key : 키값만 사용

HashMap

HashMap을 사용하여 학생 이름과 Student 객체를 매핑하는 예제입니다.

먼저, HashMap 객체 map을 생성합니다. 이 HashMap은 학생 이름(String)을 키(key)로, Student 객체를 값(value)으로 가지게 됩니다.

그런 다음, 3명의 학생을 map에 저장합니다. 각 학생의 이름과 Student 객체를 put() 메서드를 사용하여 저장합니다.

그 후, 사용자로부터 이름을 입력받기 위해 Scanner 객체를 생성합니다.

while 루프를 통해 사용자가 “exit”를 입력하기 전까지 이름을 입력받습니다. 입력한 이름을 name 변수에 저장합니다.

입력 값이 “exit”라면 while 루프를 탈출합니다.

map.get(name)을 사용하여 입력한 이름(name)에 해당하는 Student 객체를 가져옵니다. 만약 해당하는 객체가 없다면 null을 반환합니다.

이후, 가져온 student 객체를 확인하여 해당 객체가 null인지 아닌지를 검사합니다. 객체가 null이라면 해당 이름은 명단에 없다는 메시지를 출력합니다. 그렇지 않은 경우, 해당 객체의 idtel 정보를 출력합니다.

출력 결과

검색할 이름을 입력해주세요. :
홍준이    // 입력
id : 2 , 연락처 : 010-222-2222

java 카테고리 내 다른 글 보러가기

댓글 남기기