๐Ÿผ๋ฐฑ์•ค๋“œ/Java ๋ฌธ๋ฒ•

์ œ๋„ˆ๋ฆญ(Generic)๊ณผ ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ(Collection Framework)

๊ณ„๋ž€์†Œ๋…„ 2023. 8. 22. 23:25
public class ObjectBox {
    private Object object;

    public void set(Object obj) {
        this.object = object;
    }
    public Object get() {
        return this.object;
    }

}
Object์˜ ํ›„์†์€ ๋‹ค ๊บผ๋‚ผ์ˆ˜ ์žˆ๋‹ค. ๋‹จ, ๊บผ๋‚ผ ๋•Œ ์›๋ž˜ ํƒ€์ž…์œผ๋กœ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค.

import javax.swing.*;

public class ObjectBoxMain {
    public static void main(String[] args) {
        ObjectBox box = new ObjectBox();
        box.set("kim");
        String str = (String)box.get(); //๋ฌธ์ž์—ด๊ฐ์ฒด๋ฅผ ๋„ฃ์–ด์คฌ๊ธฐ ๋•Œ๋ฌธ์— ๊บผ๋‚ผ๋•Œ๋„ String ํƒ€์ž…์œผ๋กœ ํ˜•๋ณ€ํ™˜
        System.out.println(str.toUpperCase());

        Integer i = (Integer)box.get(); //์ •์ˆ˜๊ฐ์ฒด๋ฅผ ๋„ฃ์–ด์คฌ๊ธฐ ๋•Œ๋ฌธ์— ๊บผ๋‚ผ๋•Œ๋„ ์ •์ˆ˜๋กœ ํ˜•๋ณ€ํ™˜ํ•ด์„œ ๊บผ๋ƒ„
        System.out.println(i.intValue());
    }
}

 

์ œ๋„ˆ๋ฆญ

C++์˜ ํ…œํ”Œ๋ฆฟ๊ณผ ๊ฐ™์€ ์šฉ๋„์ด๋‹ค.

public class GenericBox<T> {
    private  T t;

    public void add(T obj){
        this.t = obj;
    }

    public T get(){
        return this.t;
    }
}
import java.security.CodeSigner;

public class GenericBoxMain {
    public static void main(String[] args) {
        GenericBox<String> genericBox = new GenericBox<>();
        genericBox.add("kim");
        String str = genericBox.get();
        System.out.println(str.toUpperCase());

        GenericBox<Integer> intBox = new GenericBox<>();
        genericBox.add(new Integer(5));//์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
        Integer intValue = intBox.get();
        System.out.println(intValue );

        GenericBox<Object> objBox = new GenericBox<>();
        objBox.add("hello");
        String str2 = (String)objBox.get();
        System.out.println(str2);

    }
}

์ œ๋„ˆ๋ฆญ์˜ ์žฅ์ 

์ •ํ•ด์ง„ ํƒ€์ž…๋งŒ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

ํƒ€์ž…์„ ๊ฐ•์ œํ•จ์œผ๋กœ์จ ์ปดํŒŒ์ผ ํ•  ๋•Œ ์ž˜๋ชป๋œ ํƒ€์ž…์˜ ๊ฐ’์ด ์ €์žฅ๋˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.

ํ˜•๋ณ€ํ™˜์„ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

 


์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ(Collection Framework)

 

์ž๋ฃŒ๊ตฌ์กฐ ํด๋ž˜์Šค ํŒจํ‚ค์ง€๋กœ, ์ž๋ฃŒ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ํด๋ž˜์Šค์˜ ๋ชจ์Œ

 

์ ์„  ํ™”์‚ดํ‘œ: ์˜์กดํ•œ๋‹ค. Collection ์ธํ„ฐํŽ˜์ด์Šค๋Š” Iterator ์ธํ„ฐํŽ˜์ด์Šค์— ์˜์กดํ•œ๋‹ค.

์‹ค์„  ํ™”์‚ดํ‘œ: ์ƒ์†. List,Set ์ธํ„ฐํŽ˜์ด์Šค๋Š” Collection ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค.

์ปฌ๋ ‰์…˜์€ ์ˆœ์„œ๊ฐ€ ์—†๋Š” ๋ฐ”๊ตฌ๋‹ˆ!!

๋‘๊ฐ€์ง€ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜๋‹ค.  : ๊บผ๋‚ผ๊ฒŒ ์žˆ๋Š”์ง€ ํŒ๋‹จ ๊ธฐ๋Šฅ + ๊บผ๋‚ด๋Š” ๊ธฐ๋Šฅ

Iterator() ๋ฉ”์†Œ๋“œ: ๊บผ๋‚ด๋Š” ๊ธฐ๋Šฅ ํ‘œํ˜„ ๋ฉ”์†Œ๋“œ

hasNext(): ๊บผ๋‚ผ๊ฒŒ ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฉ”์†Œ๋“œ / next(): ๊บผ๋‚ด๋Š” ๋ฉ”์†Œ๋“œ

 

List์ธํ„ฐํŽ˜์ด์Šค๋Š” Collection์„ ์ƒ์†๋ฐ›์œผ๋ฏ€๋กœ add(),iterator(),size() + get()๋ฉ”์†Œ๋“œ๋ฅผ ๋‹ค ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

List์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ˆœ์„œ๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

๊บผ๋‚ผ ๋•Œ get()์œผ๋กœ ์ˆœ์„œ๋ฅผ ๋ฐ›๋Š”๋‹ค.

 

Set์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์ฆ‰, ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๊ฐœ๋งŒ ์ €์žฅํ•œ๋‹ค.

 

Map์ธํ„ฐํŽ˜์ด์Šค๋Š”  key, value๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

๋„ฃ์„ ๋•Œ๋Š” put(key,value)๊ฐ€ ์ €์žฅ๋˜๊ณ , ๋บ„ ๋•Œ๋Š” get(key)๋กœ ๋บ€๋‹ค. key์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ด ์—†๋‹ค๋ฉด null์ด ๋‚˜์˜จ๋‹ค.

keySet()๋Š” key๋“ค๋งŒ ๋“ค์–ด์žˆ๋Š” Set ์ด๋‹ค.๋”ฐ๋ผ์„œ ํ‚ค๋ฅผ ๊บผ๋‚ผ ๋•Œ๋Š” Set -> Collection์˜ Iterator๋กœ ๊บผ๋‚ด๊ฒŒ ๋œ๋‹ค.


List ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ํด๋ž˜์Šค๋Š” ArrayList

Set ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ํด๋ž˜์Šค๋Š” HashSet

Map ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ํด๋ž˜์Šค๋Š” HashMap