자바 Java(33)
-
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 -
인터페이스 (interface)
인터페이스란 클래스의 한 종류이며, 일종의 추상클래스이다. 추상메소드 들로만 이루어진 추상메소드의 집합체 클래스라고 볼 수 있다. 추상클래스보다 추상의 정도가 높아 구현이 없는 메서드와 멤버변수를 구성원으로 가질 수 없다. 오직 추상메서드와 상수만을 멤버로 가질 수 있으며 그외에 어떠한 요소도 허용하지 않는다. 인터페이스의 사용방법 interface의 상속은 implements 키워드를 사용한다. 인터페이스도 타입으로 사용할 수 있다. 인터페이스를 임플리먼트 한 클래스 타입의 인스턴스 객체를 만드는 것은 가능 하다 인터페이스를 왜쓸까? 1.추상메소드를 하나라도 갖고 있으면 클래스도 추상화 되야된다라는 단점 2. abstract라는 키워드를 꼬박꼬박 다 써야한다는 귀찮음 3. 상속은 단일 상속밖에 안되지만..
2020.03.12 -
추상클래스(abstract class), 익명클래스(anonymous class)
추상클래스는 “미완성 설계도”에 비유할 수 있다. 클래스가 미완성이라는 거은 멤버의 개수에 관계된 것이 아니라 단지 미완성 메서드(추상 메서드)를 포함하고 있다는 의미이다. 중요한 점은 추상클래스는 인스턴스를 생설할 수 없다. 또한 상속을 통해서 자식클래스에 의해서만 완성(구현)될 수 있다. 이렇게 함으로써 이 클래스를 사용할 때는 상속을 받아 구현을 해주어야 된다는 의미이다. -추상클래스에는 하나 이상의 추상메소드가 있어야 한다. 추상메소드 앞에는 abstract 키워드를 붙여준다 -클래스에 하나라도 추상 메소드가 포함되었다면 클래스도 추상 클래스이므로 클래스명 앞에도 ‘abstract’키워드를 붙여야 한다. 추상메서드는 구현부가 없으므로 괄호{}대신 문장의 끝을 알리는 ';'을 적어준다. 상속받은 추..
2020.03.12