GiantStepDEV
article thumbnail
μžλ°”(Java) - μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬(6) (Stack)LIFO, (Queue)FIFO
πŸ—„οΈ Backend/Java 2023. 2. 2. 19:45

Stack? LIFO(Last in First Out) ꡬ쑰, μŠ€νƒμ„ μ΄μš©ν•œ λŒ€ν‘œμ μΈ μ˜ˆμ‹œλ‘œ JVM의 μŠ€νƒ λ©”λͺ¨λ¦¬λ₯Ό λ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. μŠ€νƒ λ©”λͺ¨λ¦¬μ— μ €μž₯된 λ³€μˆ˜λŠ” λ‚˜μ€‘μ— μ €μž₯된 것 λΆ€ν„° λ¨Όμ € 제거 λ©λ‹ˆλ‹€. μŠ€νƒμ€ λ‚΄λΆ€μ μœΌλ‘œ Vector 클래슀λ₯Ό 상속 λ°›μ•„ λ§Œλ“€μ–΄ μ‘ŒμŠ΅λ‹ˆλ‹€. ν”„λ‘œκ·Έλž¨ λ‚΄μ—μ„œ λ©”μ†Œλ“œμ˜ 호좜이 μŒ“μ΄λŠ” ꡬ쑰에 μ‚¬μš© λ©λ‹ˆλ‹€. μž…λ ₯κ³Ό 좜λ ₯이 ν•œ κ³³μ—μ„œλ§Œ μΌμ–΄λ‚©λ‹ˆλ‹€. κ΄€λ ¨ λ©”μ†Œλ“œ push() : 객체λ₯Ό μ €μž₯ ν•©λ‹ˆλ‹€. public E push(E item) peek() : μŠ€νƒ 맨 μœ„μ˜ κ°’ 확인 pop() : μŠ€νƒμ˜ 맨 μœ„μ˜ 값을 μΆ”μΆœν•˜λ©΄μ„œ λ³΄μ—¬μ€Œ public E pop() ➑️ Removes the object at the top of this stack and returns that object a..

μžλ°”(Java) - μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬(5) Comparable, Comparator
πŸ—„οΈ Backend/Java 2023. 2. 1. 19:16

Comparable μΈν„°νŽ˜μ΄μŠ€? 클래슀 정렬을 κ΅¬ν˜„ν•  수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” μΈν„°νŽ˜μ΄μŠ€μ΄λ©°, TreeSet μ»¬λ ‰μ…˜μ—μ„œ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. 자기 μžμ‹ κ³Ό 전달받은 λ§€κ°œλ³€μˆ˜λ₯Ό λΉ„κ΅ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€ CompareTo() λ©”μ†Œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ”© ν•΄μ„œ 정렬쑰건을 κ΅¬ν˜„ν•΄μ•Ό ν•©λ‹ˆλ‹€. compareTo() λ°˜ν™˜ κ°’ μ–‘μ˜ μ •μˆ˜ : μ •λ ¬ 쑰건 음의 μ •μˆ˜ : ν˜„ μƒνƒœ μœ μ§€ 0 : 두 객체가 λ™μΌν•˜λ‹€λŠ” 의미둜 Set νŠΉμ„±μ— μ˜ν•΄ ν•΄λ‹Ή 객체가 ν‘œμ‹œ λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ, 이 κ²½μš°μ—λŠ” ν•˜μœ„ 쑰건을 μΆ”κ°€ν•΄μ€˜μ•Ό ν•©λ‹ˆλ‹€. 🐢예제1 public class CarSort implements Comparable { String modelName; int modelYear; String color; public CarSort(String modelNam..

article thumbnail
μžλ°”(Java) - μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬(4) 검색 κΈ°λŠ₯을 κ°•ν™” μ‹œν‚¨ μ»¬λ ‰μ…˜(TreeSet, TreeMap)
πŸ—„οΈ Backend/Java 2023. 2. 1. 18:56

TreeSet 클래슀 데이터가 μ •λ ¬λœ μƒνƒœλ‘œ μ €μž₯λ˜λŠ” 이진 검색 트리(binary search tree)의 ν˜•νƒœλ‘œ μš”μ†Œλ₯Ό μ €μž₯ 이진 검색 트리 νŠΈλ¦¬λŠ” μžλ£Œμ‚¬μ΄μ˜ 계증 ꡬ쑰λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 자료 ꡬ쑰 μž…λ‹ˆλ‹€. 데이터λ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ μ œκ±°ν•˜λŠ” λ“±μ˜ κΈ°λ³Έ λ™μž‘ μ‹œκ°„μ΄ 맀우 λΉ λ¦…λ‹ˆλ‹€. μžμ‹λ…Έλ“œλŠ” 0,1,2개만 κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. κ°„λ‹¨ν•œ 검색 트리 예제 23, 10, 48, 15, 7, 22, 56 트리 생성 루트(root)-23 λ₯Ό κΈ°μ€€μœΌλ‘œ root 보닀 μž‘μœΌλ©΄ μ™Όμͺ½, 크면 였λ₯Έμͺ½μœΌλ‘œ λ°°μΉ˜λ©λ‹ˆλ‹€. 10은 23보닀 μž‘μœΌλ―€λ‘œ μ™Όμͺ½, 48은 10보닀 ν¬λ―€λ‘œ 였λ₯Έμͺ½ 15λŠ” 23보닀 μž‘μœΌλ―€λ‘œ μ™Όμͺ½, 10보닀 ν¬λ―€λ‘œ 였λ₯Έμͺ½ 7은 23보닀 μž‘μœΌλ―€λ‘œ μ™Όμͺ½, 10보닀 μž‘μœΌλ―€λ‘œ μ™Όμͺ½ 48은 23보닀 ν¬λ―€λ‘œ 였λ₯Έμͺ½ μœ„μ™€ 같이 νŠΈλ¦¬κ°€ μžλ™μœΌ..

article thumbnail
μžλ°”(Java) - μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬(3) Set(HashSet)
πŸ—„οΈ Backend/Java 2023. 1. 31. 22:07

HashSet μˆœμ„œλ₯Ό 보μž₯ν•˜μ§€ μ•ŠμœΌλ©° 쀑볡 값을 ν—ˆμš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 쀑볡 μ—¬λΆ€ 확인은 HashCode()의 리턴 값을 이용 ν•©λ‹ˆλ‹€. (κ²½μš°μ— λ”°λΌμ„œ μ˜€λ²„λΌμ΄λ”©) μˆ˜ν•™μ˜ μ§‘ν•©κ³Ό μœ μ‚¬ν•œ κ°œλ…(ν•©μ§‘ν•©, ꡐ집합, μ°¨μ§‘ν•©) import java.util.Arrays; import java.util.HashSet; public class Main { public static void main(String[] args) { HashSet set = new HashSet(); set.add(new Member(1000, "양콩미")); set.add(new Member(1001, "κ°•λ―Όκ²½")); set.add(new Member(1002, "홍길동")); Member member = new Member(1003, "ν•œ..

μžλ°”(Java) - μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬(2) Map(HashMap, Hashtable, Properties)
πŸ—„οΈ Backend/Java 2023. 1. 31. 21:40

Map μΈν„°νŽ˜μ΄μŠ€ πŸ’‘Map μΈν„°νŽ˜μ΄μŠ€λŠ” ν•˜λ‚˜κ°€ μ•„λ‹Œ 쌍(pair)둜 λ˜μ–΄ μžˆλŠ” 자료λ₯Ό κ΄€λ¦¬ν•˜λŠ” λ©”μ†Œλ“œλ‘œ μ„ μ–Έλ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. Map은 ν‚€key와 κ°’value둜 이루어져 μžˆμŠ΅λ‹ˆλ‹€. ν‚€keyλŠ” 쀑볡 ν—ˆμš©μ΄ μ•ˆλ˜κ³ , κ°’valueλŠ” 쀑볡이 κ°€λŠ₯ν•©λ‹ˆλ‹€. Hash? 데이터에 λŒ€ν•œ 검색과 μ €μž₯μ—μ„œ μ•„μ£Ό μš°μˆ˜ν•œ μ„±λŠ₯을 보이며, μ“°μž„μƒˆκ°€ λ§ŽμŠ΅λ‹ˆλ‹€. Hash둜 값을 μƒμ„±ν•˜λ©΄ 고유 μ£Όμ†Œ 값이 μƒκΈ°λŠ”λ° 이것을 숫자둜 λ³€ν™˜ν•œ 것을 hashCode라고 ν•©λ‹ˆλ‹€. 즉, μžλ°”μ—μ„œ ν•΄μ‹œμ½”λ“œλŠ” Heap μ˜μ—­μ— μΈμŠ€ν„΄μŠ€μ— λŒ€ν•œ μ°Έμ‘° 값이라고도 λΆ€λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€. Hash ν•¨μˆ˜λž€? λ°μ΄ν„°μ˜ 효율적인 관리λ₯Ό μœ„ν•΄ μž„μ˜μ˜ 길이λ₯Ό κ°€μ§„ 데이터λ₯Ό κ³ μ •λœ 길이λ₯Ό κ°€μ§„ λ°μ΄ν„°λ‘œ λ§€ν•‘ν•΄μ£ΌλŠ” ν•¨μˆ˜ μ•”ν˜Έν™”κΈ°λ²•μ΄λΌκ³ λ„ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. Hash Collisio..

article thumbnail
μžλ°”(Java) - μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬(1) List(ArrayList, LinkedList, Vector)
πŸ—„οΈ Backend/Java 2023. 1. 30. 20:13

List μΈν„°νŽ˜μ΄μŠ€λž€? λ¦¬μŠ€νŠΈλŠ” λ°°μ—΄κ³Ό λΉ„μŠ·ν•œ μžλ°”μ˜ μžλ£Œν˜•μœΌλ‘œ 배열보닀 νŽΈλ¦¬ν•œ κΈ°λŠ₯을 많이 κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€. λ¦¬μŠ€νŠΈμ™€ λ°°μ—΄μ˜ κ°€μž₯ 큰 차이점은 λ¦¬μŠ€νŠΈλŠ” 크기가 μ •ν•΄μ Έ μžˆμ§€ μ•Šκ³  λ™μ μœΌλ‘œ λ³€ν•œλ‹€λŠ” 점 μž…λ‹ˆλ‹€. 이처럼 λ°μ΄ν„°μ˜ 크기λ₯Ό μ•Œ 수 없을 λ•Œ μœ μš©ν•˜κ²Œ μ‚¬μš© κ°€λŠ₯ν•©λ‹ˆλ‹€. μš”μ†Œμ˜ μ €μž₯ μˆœμ„œ μœ μ§€ 같은 μš”μ†Œμ˜ 쀑볡 μ €μž₯ ν—ˆμš© 데이터 크기가 κ³ μ •λ˜μ–΄μžˆμ§€ μ•ŠμŒ (동적 ν• λ‹Ή) λ‹€μ–‘ν•œ λ©”μ†Œλ“œ 제곡 List μ»¬λ ‰μ…˜ 클래슀의 μ’…λ₯˜ ArrayList ⭐ LinkedList Vector Stack ArrayList, LinkedList, VectorλŠ” μ‚¬μš© 방법이 동일(λ‚΄λΆ€ ꡬ쑰가 거의 λΉ„μŠ·ν•¨)ν•˜κΈ° λ•Œλ¬Έμ— 각 클래슀λ₯Ό μ„ μ–Έν•  λ•Œμ—λŠ” μ•„λž˜ 처럼 각각 λ”°λ‘œ μƒμ„±ν•˜μ§€ 말고 List둜 μƒμ„±ν•˜μ—¬ ν•„μš”μ— 따라 λ‹€λ₯΄κ²Œ ν•˜λŠ” 것이 ..

μžλ°”(Java) - μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬
πŸ—„οΈ Backend/Java 2023. 1. 30. 19:38

μžλ°”λŠ” λ°°μ—΄μ˜ μ—¬λŸ¬κ°€μ§€ λ¬Έμ œμ μ„ ν•΄κ²°ν•˜κ³ , μ•Œλ €μ§„ 자료 ꡬ쑰λ₯Ό λ°”νƒ•μœΌλ‘œ 객체λ₯Ό 효율적으둜 μΆ”κ°€/μ‚­μ œ/검색 ν•  수 μžˆλ„λ‘ java.util νŒ¨ν‚€μ§€μ— μ»¬λ ‰μ…˜κ³Ό κ΄€λ ¨λœ μΈν„°νŽ˜μ΄μŠ€μ™€ 클래슀λ₯Ό μ œκ³΅ν•˜κ³  μžˆλŠ”λ° 이것을 μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬λΌκ³  ν•©λ‹ˆλ‹€. 즉, 데이터λ₯Ό μ €μž₯ν•˜λŠ” 자료 ꡬ쑰와 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ„ κ΅¬μ‘°ν™”ν•˜μ—¬ 클래슀둜 κ΅¬ν˜„ν•΄ 놓은 것 μž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬λŠ” μžλ°”μ˜ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜μ—¬ κ΅¬ν˜„λ©λ‹ˆλ‹€. (java.util νŒ¨ν‚€μ§€μ— 포함.. μžλ°”μ—μ„œ λ‘λ²ˆμ§Έλ‘œ 많이 μ‚¬μš©ν•˜λŠ” νŒ¨ν‚€μ§€) 제일 많이 μ‚¬μš©λ˜λŠ” νŒ¨ν‚€μ§€λŠ” java.lang μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬ μ£Όμš” μΈν„°νŽ˜μ΄μŠ€ μΈν„°νŽ˜μ΄μŠ€ μ„€λͺ… κ΅¬ν˜„ 클래슀 List μˆœμ„œκ°€ μžˆλŠ” λ°μ΄ν„°μ˜ μ§‘ν•© λ°μ΄ν„°μ˜ 쀑볡 ν—ˆμš© ArrayList, LinkedList, Vector,..

μžλ°”(Java) - Generics μ§€λ„€λ¦­μŠ€/μ œλ„€λ¦­
πŸ—„οΈ Backend/Java 2023. 1. 27. 20:52

Generics λž€? βœ… μžλ°” 8 μ—μ„œ 좔가됨 데이터 νƒ€μž…(data type)을 μΌλ°˜ν™”ν•œλ‹€(Generalize)λŠ” 것을 의미 == 데이터 ν˜•μ‹μ— μ˜μ‘΄ν•˜μ§€ μ•Šκ³ , ν•˜λ‚˜μ˜ 값이 μ—¬λŸ¬ λ‹€λ₯Έ 데이터 νƒ€μž…μ„ κ°€μ§ˆ 수 μžˆλ„λ‘ ν•˜λŠ” 방법 ν”„λ‘œκ·Έλž¨μ—μ„œ λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ λͺ¨λ“  λ³€μˆ˜λŠ” μžλ£Œν˜•μ„ κ°€μ§€κ³  있음. (int, double, char ...) 뿐만 μ•„λ‹ˆλΌ λ©”μ†Œλ“œμ—μ„œ λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” κ²½μš°μ—λ„ μžλ£Œν˜•μ„ κ°€μ§€κ³  있음. public void add(int a, int b){} 이처럼 일반적인 κ²½μš°μ—λŠ” ν•˜λ‚˜μ˜ μžλ£Œν˜•μœΌλ‘œ κ΅¬ν˜„ν•˜μ§€λ§Œ, λ³€μˆ˜λ‚˜ λ©”μ†Œλ“œμ˜ μžλ£Œν˜•μ„ ν•„μš”μ— 따라 μ—¬λŸ¬ μžλ£Œν˜•μœΌλ‘œ λ°”κΏ€ 수 μžˆλ‹€λ©΄ ν”„λ‘œκ·Έλž¨μ€ 훨씬! μœ μ—°ν•΄μ§„λ‹€. 이와 같이 μ–΄λ–€ 값이 μ°Έμ‘°ν•˜λŠ” μžλ£Œν˜•μ΄ μ•„λ‹Œ μ—¬λŸ¬ μ°Έμ‘°ν˜•μ„ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν”„λ‘œκ·Έλž˜λ° ν•˜..

μžλ°”(Java) - API 클래슀 (7) Arrays 클래슀
πŸ—„οΈ Backend/Java 2023. 1. 27. 19:44

듀어가기에 μ•žμ„œ.. java.util νŒ¨ν‚€μ§€ java.util νŒ¨ν‚€μ§€μ—λŠ” ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆλŠ” μœ μš©ν•œ μœ ν‹Έλ¦¬ν‹° ν΄λž˜μŠ€κ°€ λ‹€μˆ˜ ν¬ν•¨λ˜μ–΄ 있음 μ‹€μ œλ‘œ java.lang νŒ¨ν‚€μ§€ λ‹€μŒμœΌλ‘œ κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” νŒ¨ν‚€μ§€ import문을 μ‚¬μš©ν•˜μ§€ μ•Šμ•„λ„ μ‚¬μš©ν•  수 μžˆλŠ” java.langκ³Ό 달리 java.util νŒ¨ν‚€μ§€λŠ” import 문으둜 νŒ¨ν‚€μ§€λ₯Ό λΆˆλŸ¬μ™€μ•Ό 클래슀 μ΄λ¦„λ§Œ μ‚¬μš© κ°€λŠ₯ java.util.Arrays 클래슀 Arrays ν΄λž˜μŠ€μ—λŠ” 배열을 닀루기 μœ„ν•œ λ‹€μ–‘ν•œ λ©”μ†Œλ“œκ°€ ν¬ν•¨λ˜μ–΄ 있음 binarySearch() λ©”μ†Œλ“œ 이뢄 검색 μ•Œκ³ λ¦¬μ¦˜(λ°˜μ”© λ²”μœ„λ₯Ό μͺΌκ°œλ©° 검색) μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— μ •λ ¬(sort())이 λ˜μ–΄ μžˆμ–΄μ•Ό 함!! ν•΄λ‹Ή μœ„μΉ˜ λ°˜ν™˜ 🐸 sort() λ©”μ†Œλ“œ μ˜€λ¦„ 차순 μ •λ ¬ sort() λ©”μ†Œλ“œλŠ”..

μžλ°”(Java) - API 클래슀 (6) Wrapper 클래슀
πŸ—„οΈ Backend/Java 2023. 1. 27. 18:35

Wrapper ν΄λž˜μŠ€λž€? κΈ°λ³Έ νƒ€μž…μ„ 객체 νƒ€μž…μœΌλ‘œ λ³€ν™˜μ‹œμΌœ μ£ΌλŠ” 것 μ™œ? μ»¬λ ‰μ…˜ ν”„λ ˆμž„μ›Œν¬μ—μ„œ μ‚¬μš©λ˜λŠ” μžλ£Œν˜•μ€ λͺ¨λ‘ 객체 νƒ€μž…μ΄λ―€λ‘œ κΈ°λ³Έ νƒ€μž… μ‚¬μš© λΆˆκ°€ 객체 νƒ€μž…λ§Œ μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ”? μΌλ°˜ν™” ν”„λ‘œκ·Έλž¨μ„ μœ„ν•΄μ„œ μΌλ°˜ν™” ν”„λ‘œκ·Έλž¨μ΄ 뭔데 μ—¬λŸ¬κ°€μ§€ λ‹€μ–‘ν•œ 데이터 νƒ€μž…μ— λŒ€ν•΄μ„œ λ™μΌν•œ 자료ꡬ쑰둜 κ΄€λ¦¬ν•˜λŠ” 것 μΌλ‘€λ‘œ, κΈ°λ³Έ νƒ€μž…μ€ νƒ€μž…λ³„λ‘œ 데이터 크기가 닀름(char 2byte, int 4byte, double 8byte...) 그에 λ°˜ν•΄ 객체의 μ£Όμ†Œλ₯Ό μ°Έμ‘°ν•˜λŠ” 데이터 ν¬κΈ°λŠ” 8byte(64bit κΈ°μ€€)둜 λͺ¨λ‘ 동일. κΈ°λ³Έ νƒ€μž… 래퍼 클래슀 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boo..