Java 관련
![[Java] 이터레이터(iterator)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2JFb6%2FbtriGkGGMVl%2FaUA1L9EYflYvwj6NVQSO6K%2Fimg.jpg)
[Java] 이터레이터(iterator)
Iterator 컬렉션 프레임워크는 컬렉션에 저장된 값을 읽어오는 방법은 Iterator 인터페이스로 표준화하고 있습니다. Collection 인터페이스에서는 Iterator 인터페이스를 구현한 클래스의 인스턴스를 반환하는 iterator() 메소드를 정의하여 각 요소에 접근하도록 하고 있습니다. 따라서 Collection 인터페이스를 상속받는 List와 Set 인터페이스에서도 iterator() 메소드를 사용할 수 있습니다. interator는 String()에서 봤던 Tokenizer와 비슷한 개념이라고 할 수 있습니다. package com.test04; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedLis..
![[Java] Map Collection(맵)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrmsiN%2FbtriBcCDu3r%2F0vj2o4YVD1S3hNKqfes4Y0%2Fimg.jpg)
[Java] Map Collection(맵)
Map 컬렉션 클래스 컬렉션에서 List와 Set은 Collection을 상속받고 있지만 Map은 Collection을 상속받고 있지 않고 다른 저장 방식을 가지고 있습니다. 엄밀히 말하면 Collection이 아니지만 일반적으로 List와 Set과 같이 컬렉션으로 구분합니다. Map은 Key와 Value를 하나의 쌍으로 저장하는 방식(key-value 방식)을 사용합니다. 여기서 키(key)는 실질적인 값(value)을 찾기 위한 이름의 역할을 합니다. 또한 맵은 값의 순서가 없으며 키는 중복을 허용하지 않지만 벨류는 중복을 허용합니다. 1. 저장 순서X 2. Key는 중복 허용X 3. Value는 중복 허용 Map을 상속받고 있는 대표적인 컬렉션 클래스 1. HashMap 2. Hashtable ..
![[Java] Set Collection(셋 컬렉션)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDWIwS%2FbtriCwAgPjU%2Fly7UCqr9lMNjKZmoKMg4Jk%2Fimg.jpg)
[Java] Set Collection(셋 컬렉션)
Set 컬렉션 클래스 Set은 HashSet과 TreeSet이 상속받고 있습니다. 또한 List와 함께 Collection을 상속받고 있지만 List와는 다르게 저장된 값이 순서가 없으며 중복을 허용하지 않습니다. 1. 값의 저장 순서X 2. 값의 중복 저장X Set을 상속받고 있는 컬렉션 1. HashSet 2. TreeSet HashSet 클래스 HashSet은 Set 컬렉션 클래스에서 가장 일반적으로 사용되고 있으며 해시 알고리즘을 사용하여 속도가 매우 빠릅니다. 이러한 HashSet 클래스는 내부적으로 HashMap 인스턴스를 이용하여 값을 저장합니다. HashSet는 Set을 상속받고 있으므로 값의 순서가 없고 중복을 허용하지 않습니다. package com.test03; import jav..
![[Java] List Collection(리스트 컬렉션)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIn1Or%2FbtriBBhN6Tp%2Fzk5oLq7NYVllrycPDq0oY0%2Fimg.jpg)
[Java] List Collection(리스트 컬렉션)
List(리스트)도 Collection(컬렉션)을 상속받고 있습니다. 이전 포스팅에서 보았던 Vector(백터)의 경우 컬렉션을 상속받고 있는 리스트를 상속받고 있습니다. 백터가 값의 순서가 있으며 중복을 허용했었던 것처럼 리스트도 값의 순서가 있고 중복을 허용하고 있습니다. 또한 대표적인 List를 상속받고 있는 컬렉션 클래스는 다음과 같습니다. 1. ArrayList 2. LinkedList 3. Vector 4. Stack 리스트를 상속받고 있는 모든 컬렉션 클래스는 값의 저장 순서가 유지되며 중복을 허용합니다. 일반적으로 위 4개의 컬렉션 중 ArrayList를 가장 많이 쓰고 지난번 포스팅에서 백터를 보았기 때문에 ArrayList를 알아보고 LinkedList 컬렉션을 간단하게 알아..
![[Java] 백터(Vector) & 향상된 for문(foreach)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTuI0F%2FbtriDw080PB%2F0c873U5FIbdmklW9j1BmlK%2Fimg.jpg)
[Java] 백터(Vector) & 향상된 for문(foreach)
백터(Vector)는 Collection을 상속받고 있는 List를 상속받고 있습니다. 그림과 같은 형태를 가지고 있습니다. 또한 백터는 리스트를 상속받고 있으므로 리스트와 같은 속성을 가집니다. 데이터의 순서가 있으며 중복을 허용합니다. List를 알아보기 전에 Vector의 특징은 어떨까요?? Vector v = new Vector(10,5); 우선 백터는 위와 같은 형태로 사용됩니다. Vector(iCa, cpIn)인데요. iCa는 용량(capacity), cpIn만큼 용량 증가라는 의미입니다. 즉 iCa만큼 용량을 만들며 cpln만큼 용량을 증가시킵니다. package com.test01; import java.util.Vector; public class MTest01 { public s..
![[Java] 컬렉션(Collection framework)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F95LjN%2Fbtriz7IJiz1%2FxVCEMaieAACdtYZ6ojOES0%2Fimg.jpg)
[Java] 컬렉션(Collection framework)
컬렉션 프레임워크(Collection framework)란? 자바에서 컬렉션 프레임워크(collection framework)는 여러 개의 값을 효과적으로 관리하는 객체를 말합니다. 다수의 데이터를 쉽게 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합입니다. 즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것입니다. 이러한 컬렉션 프레임워크는 자바의 인터페이스(interface)를 사용하여 구현됩니다. 컬렉션 프레임워크 주요 인터페이스 컬렉션 프레임워크에서는 데이터를 저장하는 자료 구조에 따라 다음과 같은 핵심이 되는 주요 인터페이스를 정의하고 있습니다. 1. List 인터페이스 2. Set 인터페이스 3. Map 인터페이스 List와 Set은 ..
![[Java] 제네릭(Generic)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmkmr5%2FbtriCFqs28z%2FTtgyq99hAwpb21OPHH8QpK%2Fimg.jpg)
[Java] 제네릭(Generic)
제네릭(generic)은 개발자가 의도한 타입만 저장할 수 있도록 하는 것으로 데이터의 타입을 강제하는 것입니다. 즉, 타입을 일반화한다(generalize)는 것을 의미합니다. 제네릭은 메소드나 클래스에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법입니다. 컴파일 시에 미리 타입 검사(type check)를 수행하면 다음과 같은 장점을 가집니다. 1. 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있습니다 2. 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있습니다. class MyArray { T element; void setElement(T element) { this.element = element; } T getElement() { retur..
![[Java] 싱글톤 패턴(Singleton pattern)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIpW42%2FbtriAHQkARd%2FmmCByOdi7YEvWdv17NB220%2Fimg.jpg)
[Java] 싱글톤 패턴(Singleton pattern)
싱글톤 패턴(Singleton pattern)이란? 싱글톤 패턴이란 어떤 클래스가 생성자가 수차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 한 번만 메모리를 할당하며 그 메모리에 객체를 만들어 사용하는 패턴입니다. 생성자의 호출이 반복적으로 이루어져도 실제로 생성되는 객체는 최초 생성된 객체를 반환해 줍니다. 이런 싱글톤 패턴은 자바에서 많이 사용합니다. 1. Singleton.java package com.singleton; // singleton pattern : 메모리(heap)에 객체를 한번만 생성 public class Singleton { // 2. 객체를 확인할 주소(reference) 변수 선언 private static Singleton singleton; // 1. 보통은 ..
![[Java] 내부 클래스(inner class)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMjh4i%2Fbtriz8AQWS6%2FrnNJsYUoByVnaF3ZbhmQwk%2Fimg.jpg)
[Java] 내부 클래스(inner class)
1. 내부 클래스(inner class) 내부 클래스란 어떤 클래스 내부에 선언된 또 하나의 클래스를 의미합니다. 이런 내부 클래스는 외부 클래스(outer class)에 대해 두 클래스가 서로 긴밀한 관계를 맺고 있을 때 선언이 가능합니다. 또한 클래스안에 클래스를 만드는 건 가능하지만 해당 페이지에서만 사용하게 만들어야 합니다. 따라서 public 클래스는 하나만 있어야 합니다. class Outer { // 외부 클래스 ... class Inner { // 내부 클래스 ... } ... } 2. 내부 클래스의 장점 1. 내부 클래스에서 외부 클래스의 멤버에 손쉽게 접근할 수 있게 됩니다. 2. 서로 관련 있는 클래스를 논리적으로 묶어서 표현함으로써, 코드의 캡슐화를 증가시킵니다. 3. 외..
![[Java] 인터페이스(interface)를 이용한 도형의 넓이 구하기 & 캡슐화](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvG22w%2Fbtriz81ZVnE%2FbkKxeaxIoydmGRDh6iqsvK%2Fimg.jpg)
[Java] 인터페이스(interface)를 이용한 도형의 넓이 구하기 & 캡슐화
캡슐화(Encapsulation)는 캡슐안에 어떤 가루약이 들어 있는지 은닉된 것처럼 코드를 은닉하는 것을 말합니다. 예를 들어 우리가 지금까지 사용하는 출력 명령어 System.out.println();의 경우 해당 메소드를 계속해서 사용하고는 있지만 해당 메소드의 코드는 알지 못합니다. 해당 메소드의 코드는 캡슐화되어 코드가 은닉되었기 때문입니다. 이런 점으로 캡슐화는 정보 은닉이 가능하다는 장점을 가지고 있습니다. 캡슐화는 변수와 메소드를 하나의 추상화된 클래스로 묶는 과정으로 캡슐화를 이용해서 변수와 메소드가 독립적으로 동작되지 않도록 만듭니다. 캡슐 속 객체는 데이터와 메소드를 포함하고 있으므로 따로 분리할 수는 없습니다. 인터페이스를 이용한 도형의 넓이를 구하는 코드 1. Area.java..