JavaStudy

TIL JAVA #2-4

๋ฆฐ์˜ˆ์กฐ 2023. 10. 20. 14:07

1. ์ปฌ๋ ‰์…˜(์ž๋ฃŒ๊ตฌ์กฐ)


- ๋ฐฐ์—ด์„ ๊ณ ๋„ํ™”์‹œ์ผœ collection(์ปฌ๋ ‰์…˜)์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ฐธ์กฐํ˜• ์ž๋ฃŒ๊ตฌ์กฐ(๋ถ„๋ฅ˜ํ†ต)๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

- ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋ชจ๋ฅด์ง€๋งŒ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•ด์•ผ ๋  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋Ÿด ๋•Œ collection ์— ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์šฉ๋„์— ๋งž๊ฒŒ ์‚ฌ์šฉ!

- ๊ฐ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ๋นผ๋Š” ๋ฐฉ๋ฒ•์ด ๋‹ค ๋‹ค๋ฅด๋‹ค. 

 

<์ข…๋ฅ˜๋ฅผ ๋จผ์ € ์‚ดํŽด๋ณด์ž>

# ์ƒ์„ฑ์ž O:  List, LinkedList, Stack (FILO), ์•ฝ๊ฐ„ ํ”„๋ง๊ธ€์Šค ๊ฐ™๋‹ค!! 

#์ƒ์„ฑ์ž X: Queue (FIFO), Set (์ง‘ํ•ฉ, ์ค‘๋ณตํ—ˆ์šฉ X), Map (Key : Value) - ์ค‘๋ณต๋˜๋Š” ๊ฒƒ์€ ๋งจ๋งˆ์ง€๋ง‰์— ์žˆ๋Š” ํ•ญ๋ชฉ์œผ๋กœ ๋ฎ์–ด์“ฐ๊ธฐ ๋œ๋‹ค! 


1. List - ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ, ๋ฐ์ดํ„ฐ ์ค‘๋ณต ํ—ˆ์šฉ

- Array์™€ ๋น„์Šทํ•˜๋‚˜ list๋Š” ํฌ๊ธฐ๊ฐ€ ๊ฐ€๋ณ€์ ์œผ๋กœ ๋Š˜์–ด๋‚˜๋Š” ๋™์ ๋ฐฐ์—ด!

 

1-1. ์„ ์–ธ, ์ƒ์„ฑ, ์‚ฌ์ด์ฆˆ ์ง€์ • ์•ˆํ•ด๋„ ๋จ(์ดˆ๊ธฐํ™” ์•ˆํ•ด๋„ ๋จ.), add, set-์ˆ˜์ •, remove ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ.

ArrayList<Integer> intList = new intList<Integer>(); //1. ์„ ์–ธ ๋ฐ ์ƒ์„ฑ!
intList.add(1) //2.๋ฆฌ์ŠคํŠธ์— ๊ฐ’ ๋„ฃ์–ด์ฃผ๊ธฐ
//intList.get(1)ํ•˜๋‚˜์”ฉ ์กฐํšŒ
//toString()ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” List๋ฐฐ์—ด ๋‚ด๋ถ€ ๊ฐ’ ์ „์ฒด๋ฅผ [] ๋Œ€๊ด„ํ˜ธ๋กœ ๋ฌถ์–ด ๊ฐ–๊ณ  ์˜จ๋‹ค!

1-2 LinkedList, ์ˆœ์„œ X

- ๋ฉ”๋ชจ๋ฆฌ ๋‚จ๋Š” ๊ณต๊ฐ„์„ ์š”์ฒญํ•ด ๊ฐ’์„ ์—ฌ๊ธฐ์ €๊ธฐ ๋„ฃ์–ด๋†“๊ณ  ์‹ค์ œ๊ฐ’์ด ์žˆ๋Š” ์ฃผ์†Œ๊ฐ’์œผ๋กœ ๋ชฉ๋ก์„ ๊ตฌ์„ฑํ•˜๊ณ  ์ €์žฅํ•œ๋‹ค!

- ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ์ž‘์—…์€ ๋น„๊ต์  ๋น ๋ฅด๊ณ  ์ „์ฒด๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ฒƒ์€ ๋น„๊ต์  ๋Š๋ฆฌ๋‹ค.

 


 

2. Stack - ๊ฐ’์„ ์ˆ˜์ง์œผ๋กœ ๋„ฃ๊ณ  ๋นผ๋Š” ๋ฐฉ์‹ FILO, ์ฒ˜์Œ ๋“ค์–ด๊ฐ„ ๊ฐ’์ด ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋‚˜์˜จ๋‹ค. ํ”„๋ง๊ธ€์Šค๊ฐ™๋‹ค~

- ๊ฐ’์„ push, peek, pop ๋„ฃ๊ธฐ, ์กฐํšŒ, ๋นผ๊ธฐ ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค!

- ์ด๋ ‡๊ฒŒ ๋ถˆํŽธํ•˜๊ฒŒ ์“ฐ๋Š” ์ด์œ ๋Š”? ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜์—ดํ•˜๊ฑฐ๋‚˜ ์ค‘๋ณต์ฒ˜๋ฆฌ๋ฅผ ๋ง‰๊ณ ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

2-1. ์„ ์–ธ ๋ฐ ์ƒ์„ฑ ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ

Stack<Integer> intStack = new Stack<Integer>(); //1. ์„ ์–ธ ๋ฐ ์ƒ์„ฑ
intStack.push(1);
intStack.push(2);
intStack.push(3); //๊ฐ’ ๋„ฃ์–ด์ฃผ๊ธฐ

while(!intStack.isEmpty()) //isEmpty()๋ฉ”์„œ๋“œ, ๋ฐฐ์—ด ๋‚ด๋ถ€์— ๊ฐ’์ด ์žˆ์„ ๋•Œ(!์„ ์จ์„œ ๋น„์–ด์žˆ์ง€ ์•Š์œผ๋ฉด~)
						   //ํ•ด๋‹น ๋ฐ˜๋ณต๋ฌธ ์‹คํ–‰
{
	S.o.println(intStack.pop()); //๊ฐ’์„ ๋„ฃ์–ด์ค€ ์ˆœ์„œ ๋ฐ˜๋Œ€๋กœ 3, 2, 1 ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅ๋œ๋‹ค.
}

 


 

3. Queue - ํ•œ์ชฝ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ๋นผ๋Š” ๋ฐฉ์‹ FIFO, ์ฒ˜์Œ ๋“ค์–ด๊ฐ„ ๊ฐ’์ด ์ฒ˜์Œ์— ๋‚˜์˜จ๋‹ค.

- Stack๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ add, peek, poll ๋„ฃ๊ธฐ, ์กฐํšŒ, ๊บผ๋‚ด๊ธฐ๋งŒ ๊ฐ€๋Šฅ. 

- ์ƒ์„ฑ์ž ์—†๋Š” ๊ป๋ฐ๊ธฐ๋ผ ๋ฐ”๋กœ ์ƒ์„ฑ ๋ถˆ๊ฐ€๋Šฅ. LinkedList์˜ ๋„์›€ ๋ฐ›๊ธฐ! 

 

3-1. ์„ ์–ธ ๋ฐ ์ƒ์„ฑ ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ

Queue<Integer> intQueue = new LinkedList <Integer>(); //์„ ์–ธ ๋ฐ ์ƒ์„ฑ

์‚ฌ์šฉ๋ฐฉ์‹์€ ๋ฉ”์„œ๋“œ ์ด๋ฆ„๋งŒ ๋‹ค๋ฅด๊ณ  stack๊ณผ ๋™์ผ.

 


 

4. Set - ๋งˆ์น˜ ์ง‘ํ•ฉ๊ณผ ๊ฐ™์€ ๋ชจ์–‘! ๊ฐ’๋“ค์— ์ˆœ์„œ๊ฐ€ ์—†๊ณ  ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ˆœ์„œX

- ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜์ง€ ์•Š๋Š” ๋Œ€์‹  ์ค‘๋ณต์„ ํ—ˆ๋ฝํ•˜์ง€ ์•Š๋Š”๋‹ค!

- Set๋„ Queue์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ƒ์„ฑ์ž๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋„์›€์ด ํ•„์š”ํ•จ. HashSet์„ ์ด์šฉํ•˜์ž!!

 

4-1. ์„ ์–ธ ๋ฐ ์ƒ์„ฑ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ!

Set<Integer> intSet = new HashSet<Integer>(); //1. ์„ ์–ธ ๋ฐ ์ƒ์„ฑ


intSet.add(1);
intSet.add(2);
intSet.add(3);
intSet.add(3);//์ค‘๋ณต๊ฐ’ ๋ฎ์–ด์“ฐ๊ธฐ ๋จ.

for( Integer value:intSet)// ๊ฐ’์„ value๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ํ•˜๋‚˜์”ฉ ์กฐํšŒํ•ด์„œ ๋ฐฐ์—ด ์ „์ฒด๋ฅผ ๋ˆ๋‹ค
{
  soprintln(value) 1,2,3 ์ถœ๋ ฅ 333์œผ๋กœ ๋‚˜์˜ค์ง€ ์•Š๋Š”๊ฑด ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ! 
}

intSet.contains(2)//ํ•ด๋‹น ๊ฐ’์„ ํฌํ•จํ•˜๋Š”์ง€ ์กฐํšŒํ•˜๋Š” ๋ฉ”์†Œ๋“œ
				  //์ถœ๋ ฅ์‹œ, boolean t.f ๊ฐ’์œผ๋กœ ์ถœ๋ ฅ.
                  
intSet.remove(1)// ํ•ด๋‹น ๊ฐ’ ์‚ญ์ œ. ์ถ”๊ฐ€ํ–ˆ๋˜ 1์ด ์‚ญ์ œ๋œ๋‹ค.

 


 

5. Map - key:value ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฉฐ key๊ฐ’์€ unique ํ•ด์•ผ๋œ๋‹ค.

- ๋งŒ์•ฝ ๋™์ผํ•œ key์— value ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋งˆ์ง€๋ง‰์— ๋„ฃ์€ ๊ฐ’์œผ๋กœ ๋ฎ์–ด์“ฐ๊ธฐ ๋œ๋‹ค. ์ˆœ์„œ X, ์ค‘๋ณตํ—ˆ์šฉ X

- ๊ธฐ์กด ์ˆœ๋ฒˆ์œผ๋กœ ์กฐํšŒํ•˜๋˜ ์ž๋ฃŒ๊ตฌ์กฐ์™€๋Š” ๋‹ฌ๋ฆฌ key ๊ฐ’์œผ๋กœ value๊ฐ’์„ ์กฐํšŒํ•œ๋‹ค.

 

5-1. ์„ ์–ธ ์ƒ์„ฑ ์‚ฌ์šฉ

- ์•ž์„œ ๋ณธ ๋ฐฐ์—ด๋“ค๊ณผ ๋‹ฌ๋ฅธ ๋ฐ˜๋ณต๋ฌธ ()๊ด„ํ˜ธ ์•ˆ์„ ๊ธฐ์–ตํ•˜์ž! //keySet()๋“ฑ์žฅ!

Map <String:Integer> intMap = new Hashmap<>(); //์„ ์–ธ ๋ฐ ์ƒ์„ฑ. ์„ ์–ธ ๋˜ํ•œ <key:value>

intMap.put("์ผ", 11);
intMap.put("์ด", 12);
intMap.put("์‚ผ", 13);
intMap.put("์‚ผ", 14);
intMap.put("์‚ผ", 15);

for(String key: intMap.keySet()){
	s.o.println(key); // ์ „์ฒด key ๊ฐ’ ์ผ, ์ด, ์‚ผ ์ถœ๋ ฅ๋จ! (์ค‘๋ณต key๊ฐ’ ๋ฌด์‹œ)
}

//value ๊ฐ’ ์ „์ฒด ์ถœ๋ ฅ
for(String key: intMap.values()){
	s.o.println(key); // 11, 12, 15 ์ถœ๋ ฅ๋จ. key๊ฐ’ ๋™์ผํ•˜๋‹ค๋ฉด ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€๋œ value ๊ฐ’์ด ์ถœ๋ ฅ
}

//get()
s.o.println.get("์‚ผ") // 15์ถœ๋ ฅ

 

- ์ฒ˜์Œ ๋“ฑ์žฅํ•œ array ๋ฐฐ์—ด์€ ๋ฐ˜๋“œ์‹œ ๊ธธ์ด๋ฅผ ์„ ์–ธํ•ด์ค˜์•ผ ํ•œ๋‹ค. ์ปฌ๋ ‰์…˜์— ์žˆ๋Š” ๋ฐฐ์—ด์€ ์ดˆ๊ธฐ ๊ธธ์ด๋ฅผ ๋ชฐ๋ผ๋„ ์„ ์–ธ๊ณผ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค!

- ๋ฐฐ์—ด ๋‚ด๋ถ€ ๊ฐ’์„ ์กฐํšŒํ•  ๋•Œ ๊ผญ ๋ฐ˜๋ณต๋ฌธ์„ ์“ด๋‹ค.

 

- ์ž๋ฃŒ๊ตฌ์กฐ๋งˆ๋‹ค ํŠน์ง•์ด ๋‹ค๋ฅด๋‹ˆ ์ž‘์„ฑํ•˜๋ ค๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์ž˜ ์„ ํƒํ•ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ! ๊ทธ๋Ÿฌ๋ ค๋ฉด ํŠน์ง•์„ ์ž˜ ์ดํ•ดํ•ด์•ผ๊ฒ ์ฃฑ?! 

- ๋˜๊ฒŒ ๋น„์Šทํ•ด๋ณด์ด์ง€๋งŒ ๊ฐ๊ฐ ๊ฐ’์„ ์ถ”๊ฐ€ ์‚ญ์ œ ์กฐํšŒ ๋“ฑ์˜ ๋ฐฉ์‹์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ๊ณ  ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•ด ๊ฐ’์„ ์ถœ๋ ฅํ•  ๋•Œ๋„ ์กฐ๊ธˆ์”ฉ ๋ฌธ๋ฒ•์ด ๋‹ค๋ฅด๋‹ค! 

 

 

 ์ž๋ฐ”๋Š” ํ˜„์‹ค์„ธ๊ณ„์— ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋ณธ๋”ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ์–ธ์–ด์ด๋‹ˆ๊นŒ ๋‚˜๋„! ๋‚ด ์ฃผ๋ณ€์— ์žˆ๋Š” ์‚ฌ๋ฌผ๋“ค์„ ํ†ตํ•ด ์ดํ•ดํ•ด๋ด์•ผ ๊ฒ ๋‹ค! 

'JavaStudy' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

TIL JAVA #3-2  (3) 2023.12.01
TIL JAVA #3-1  (0) 2023.11.30
TIL JAVA #2-3  (0) 2023.10.19
TIL JAVA #2-2  (3) 2023.10.19
TIL JAVA #2-1  (0) 2023.10.18