2020/03(25)
-
제네릭(generic) -미완성
제네릭(generic)이란? 자바에서 제네릭(generic)이란 데이터의 타입(data type)을 일반화한다(generalize)는 것을 의미합니다. 제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법입니다. 이렇게 컴파일 시에 미리 타입 검사(type check)를 수행하면 다음과 같은 장점을 가집니다. 1. 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있습니다 2. 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있습니다. JDK 1.5 이전에서는 여러 타입을 사용하는 대부분의 클래스나 메소드에서 인수나 반환값으로 Object 타입을 사용했습니다. 하지만 이 경우에는 반환된 Object 객체를 다시 원하는 타입으로 타입 변환해..
2020.03.16 -
iterator & hasnext (), next() 메소드 - 미완성
iterator는 자바의 컬렉션 프레임 워크에서 컬렉션에 저장되어 있는 요소들을 읽어오는 방법을 표준화 한 것이다. 컬렉션 프레임 워크란 데이터를 저장하는 클래스들을 표준화 한 설계이다. 컬렉션 프레임 워크는 아래 그림과 같이 데이터를 저장하는 구조에 따라 3가지 인터페이스로 구성된다. Set, List, Map은 어떤 데이터들의 집합체라고 볼 수 있다. Set과 List는 데이터의 그룹(Collection)이다. Set은 순서를 유지하지 않는 데이터의 집합이다. 데이터의 중복이 허용되지 않고 HashSet, TreeSet 등이 있다. List는 순서를 유지하는 데이터의 집합이다. 데이터의 중복이 허용되며 Vector, LinkedList, ArrayList 등이 있다. List 클래스에 대해서는 한번 ..
2020.03.16 -
Hashmap(해쉬맵) -미완성
key 키값은 숫자 못들어간다. value 객체가 들어간다..? 1. HashMap이란? : HashMap은 Map을 구현한다. Key와 value를 묶어 하나의 entry로 저장한다는 특징을 갖는다. 그리고 hashing을 사용하기 때문에 많은양의 데이터를 검색하는데 뛰어난 성능을 보인다. Map 인터페이스의 한 종류로 ( "Key", value) 로 이뤄져 있다. key 값을 중복이 불가능 하고 value는 중복이 가능. value에 null값도 사용 가능하다. 멀티쓰레드에서 동시에 HashMap을 건드려 Key - value값을 사용하면 문제가 될 수 있다. 멀티쓰레드에서는 HashTable을 쓴다 2. HashMap 생성자 / 메서드 생성자/메서드 내용 HashMap() - HashMap 객체를 ..
2020.03.16 -
ArrayList, Linked List -미완성 2020.03.16
-
제네릭 프로그래밍(generic programming)-미완성
왜 제네릭을 사용해야 하는가? 제네릭 타입을 이용함으로써 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있다. 제네릭은 클래스와 인터페이스, 메소드를 정의할 때 타입(type)을 파라미터(parameter)로 사용할 수 있도록 한다. 제네릭(Generic)은 코드블럭 내부에서 쓸 자료형을 외부에서 지정하는 기법을 뜻한다. 여러가지 자료형을 허용하고 싶을 때 Object로 선언해버리면 깔끔하지만, 그렇게하면 원하지 않는 자료형이 입력되었을 때의 오류를 컴파일 시점에 잡아낼 수 없다. 장점1. 컴파일 시 강한 타입 체크를 할 수 있다. 실행시 타입 에러가 나는 것보다 컴파일 시에 미리 타입을 강하게 체크해서 에러를 사전에 방지 장점2. 타입 변환(castring)을 제거한다. 비제네릭 코드..
2020.03.16 -
템플릿 메소드 패턴 (template method pattern)
템플릿 메서드 패턴이란 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴 즉, 전체적으로는 동일하면서 부분적으로는 다른 구문으로 구성된 메서드의 코드 중복을 최소화 할 때 유용하다. (동작 상의 알고리즘의 프로그램 뼈대를 정의하는 행위 디자인 패턴으로써, 알고리즘의 구조를 변경하지 않고 알고리즘의 특정단계를 다시 정의할 수 있게 해주는 패턴방식. 공통되는 부분은 추상클래스로 정의된 상위 클래스에서 구현을 하고, 재정의가 필요한 부분은 추상메소드로 선언한다.) 다른 관점에서 보면 동일한 기능을 상위 클래스에서 정의하면서 확장/변화가 필요한 부분만 서브 클래스에서 구현할 수 있도록 한다. 예를 들어, 전체적인 알고리즘은..
2020.03.13