본문 바로가기
반응형

전체 글201

초보 자바 프로그래밍(36) - 공변성과 반공변성 (Covariance and Contravariance) 🔖 INDEX 공변성 (Covariance) 공변성은 하위 타입 간의 관계를 유지하는 것을 의미합니다. 예를 들어, 클래스 A가 클래스 B를 상속하고 있을 때, List와 List 사이의 관계를 고려해봅시다. 공변성이 허용되는 경우, List는 List의 하위 타입으로 간주됩니다. 그러나 자바의 제너릭은 기본적으로 불변성을 따르므로, 이러한 관계가 자동으로 성립하지 않습니다. 자바에서 공변성을 처리하려면 와일드카드를 사용해야 합니다. 와일드카드를 사용하여 공변성을 지원하는 제너릭 타입을 선언할 수 있습니다. List 2023. 5. 2.
초보 자바 프로그래밍(35) - 제너릭 (Generics) 🔖 INDEX 제너릭 (Generics)은 자바에서 매우 중요한 프로그래밍 개념으로, 코드의 유연성과 재사용성을 높이는 데 도움이 되는 기능입니다. 제너릭을 사용하면 클래스, 인터페이스, 메서드에 타입 매개 변수를 적용할 수 있습니다. 이를 통해 다양한 타입의 객체를 처리하면서, 타입 안전성을 유지할 수 있습니다. 제너릭의 주요 이점 제너릭의 주요 이점은 다음과 같습니다: ​ 타입 안전성(Type Safety): 제너릭을 사용하면 컴파일 시점에서 타입 검사를 수행할 수 있으므로, 잘못된 타입의 객체가 사용되는 것을 방지할 수 있습니다. 이로 인해 런타임에 발생할 수 있는 ClassCastException 등의 예외를 줄일 수 있습니다. 코드 재사용성(Reusability): 제너릭을 사용하면 여러 타입의.. 2023. 5. 2.
초보 자바 프로그래밍(34) - 배열과 ArrayList 비교 🔖 INDEX 이 글에서는 자바에서 사용하는 배열과 ArrayList의 차이점을 비교하고, 배열 대신 ArrayList를 사용하는 방법에 대해서 알아봅니다. 각각의 특징과 장단점을 이해하고, 언제 어떤 것을 사용하는 것이 좋을지 결정하는 데 도움이 됩니다. 또한, ArrayList의 개념과 사용법을 이해하고, 실제 프로젝트에서 어떻게 활용할 수 있는지 알아봅시다. 배열과 ArrayList 차이점 배열과 ArrayList는 다음과 같은 차이점이 있습니다: 배열과 ArrayList 개요 배열은 고정된 크기의 연속된 메모리 공간에 동일한 타입의 데이터를 저장하는 기본 자료구조입니다. ArrayList는 java.util 패키지의 클래스로, 동적으로 크기가 조절되는 배열입니다. ArrayList는 내부적으로 배.. 2023. 5. 2.
초보 자바 프로그래밍(33) - 가변 인자를 사용한 메서드 작성 🔖 INDEX 이 글에서는 자바에서 가변 인자를 사용하여 메서드를 작성하는 방법에 대해 설명합니다. 가변 인자의 개념과 사용법을 이해하고, 실제 프로젝트에서 어떻게 활용할 수 있는지 알아봅시다. 가변 인자를 사용한 메서드 작성하기 자바에서 가변 인자(Varargs)는 메서드에 전달되는 인자의 개수가 유동적일 때 사용할 수 있는 기능입니다. 가변 인자는 메서드 매개변수의 타입 뒤에 '...'을 붙여서 선언하며, 메서드 내부에서는 배열로 취급됩니다. 가변 인자를 사용한 메서드를 작성하려면, 메서드의 매개변수 선언 시 타입 뒤에 '...'을 추가하면 됩니다. 가변 인자는 메서드 내부에서 배열로 취급되기 때문에 배열과 유사한 방식으로 사용할 수 있습니다. public static void methodName(T.. 2023. 5. 2.
초보 자바 프로그래밍(32) - 배열을 반환하는 메서드 작성 🔖 INDEX 메서드에서 배열을 반환하려면, 반환 타입을 해당 배열 타입으로 명시해야 합니다. 그리고 메서드 내부에서 배열을 생성, 채우거나 수정한 후에 'return' 키워드를 사용하여 해당 배열을 반환해야 합니다. 메서드에서 배열 반환하기 자바에서 배열을 반환하는 과정은 다음과 같습니다. ​ 1. 메서드의 반환 타입을 배열 타입으로 명시하기 반환하고자 하는 배열의 타입을 명시해야 합니다. 예를 들어, int형 배열을 반환하는 메서드를 작성하려면 반환 타입을 'int[]'로 지정해야 하며, String형 배열을 반환하려면 반환 타입을 'String[]'로 지정해야 합니다. public static int[] returnIntArray() { ... } public static String[] retur.. 2023. 5. 2.
초보 자바 프로그래밍(31) - 배열을 이용한 메서드 인자 전달 🔖 INDEX 배열을 이용한 메서드 인자 전달은 자바에서 매우 일반적인 패턴입니다. 배열을 사용하면 메서드에 여러 값을 한 번에 전달할 수 있고, 메서드의 매개변수를 유연하게 관리할 수 있습니다. 아래에서 자세한 내용을 확인해 보세요. 배열을 이용한 메서드 인자 전달 방법 1. 배열 선언 및 초기화: 자바에서 배열을 선언하려면 데이터 타입 뒤에 대괄호를 사용합니다. 배열을 초기화하려면 new 키워드를 사용하여 배열의 크기를 지정합니다. int[] numbers = new int[5]; // int 타입의 배열 선언 및 초기화 2. 배열 요소에 값 할당: 배열의 각 요소에 값을 할당하려면 인덱스를 사용하여 접근합니다. 인덱스는 0부터 시작하며, 배열의 크기보다 작아야 합니다. numbers[0] = 1; .. 2023. 5. 2.
초보 자바 프로그래밍(30) - 개방주소법 (Open Addressing) 🔖 INDEX 개방 주소법(Open Addressing)은 모든 키-값 쌍을 해시 테이블 자체에 직접 저장하는 방법입니다. 충돌이 발생하면, 다른 버킷에 키-값 쌍을 저장하는 방법을 사용합니다. 개방 주소법에는 선형 탐사(linear probing), 이차 탐사(quadratic probing), 더블 해싱(double hashing) 등의 충돌 해결 방식이 있습니다. 개방 주소법의 특징 개방 주소법의 장점은 다음과 같습니다: 해시 테이블 외부에 추가적인 메모리를 사용하지 않으므로 공간 효율성이 높습니다. 캐시 지역성이 좋아서 연속된 메모리 위치에 데이터를 저장할 수 있습니다. ​ 개방 주소법의 단점은 다음과 같습니다: 해시 테이블의 로드 팩터가 높아지면 성능 저하가 심해집니다. 일반적으로 로드 팩터가 .. 2023. 5. 2.
초보 자바 프로그래밍(29) - 개별체이닝 (Separate Chaining) 🔖 INDEX 개별 체이닝은 각 해시 버킷에 연결 리스트(linked list) 또는 트리와 같은 자료 구조를 사용하여 키-값 쌍을 저장하는 방법입니다. 충돌이 발생하면, 해당 버킷에 있는 연결 리스트에 새로운 키-값 쌍을 추가합니다. 개별 체이닝의 특징 개별 체이닝의 장점은 다음과 같습니다: 해시 테이블의 크기와 상관없이 삽입, 삭제, 검색 연산이 상수 시간에 가능합니다(연결 리스트의 길이가 작은 경우). 해시 테이블의 로드 팩터가 높아져도 성능 저하가 덜 합니다. ​ 개별 체이닝의 단점은 다음과 같습니다: 연결 리스트를 사용하므로, 메모리 할당 및 해제에 추가적인 오버헤드가 발생합니다. 연결 리스트를 사용하기 때문에 캐시 지역성이 떨어져 성능이 저하될 수 있습니다. 개별 체이닝 구현 예제 개별 체이닝.. 2023. 5. 2.
초보 자바 프로그래밍(28) - 해시검색 (Hash Search) 🔖 INDEX 해시 검색(hash search)은 해시 테이블(hash table)이라는 자료 구조를 사용하여 빠르게 원하는 값을 찾을 수 있는 검색 방법입니다. 해시 테이블은 키(key)와 값(value)을 저장하는 데 사용되며, 해시 함수(hash function)를 사용하여 키를 해시 값으로 변환합니다. 해시 값은 해시 테이블 내의 인덱스로 사용되어 효율적인 검색, 삽입 및 삭제를 가능하게 합니다. 해시 검색의 작동 방식 및 구현 예제 해시 검색의 작동 방식은 다음과 같습니다: 해시 함수를 사용하여 키를 해시 값으로 변환합니다. 해시 값으로 해시 테이블 내의 인덱스를 찾습니다. 인덱스에 저장된 값을 검색, 삽입 또는 삭제합니다. 자바에서 해시 검색 알고리즘을 구현할 때, HashMap 클래스를 사용.. 2023. 5. 2.
반응형