Iterator는 반복자라는 뜻을 갖는다. 컬렉션에 저장된 요소들을 순차적으로 읽어오는 역할을 하며, Collection 인터페이스 안에는 iterator 인터페이스의 iterator()메서드가 정의되어 있다. 즉 iterator()를 호출하면 Iterator 타입의 인스턴스가 반환된다. 따라서 List와 Set 인터페이스를 구현한 클래스들은 공통으로 iterator() 메서드를 사용할 수 있다. iterator()를 통해 만들어진 인스턴스는 아래의 메서드를 사용할 수 있다. next()메서드를 사용시 hasNext()를 통해 다음 객체가 있는지 확인하는 것이 좋다. 구체적인 사용 방법은 다음과 같다. List list = ...; Iterator iterator = list.iterator(); whi..
List List 인터페이스를 구현할 앞으로의 모든 List 컬렉션 클래스는 다음과 같은 공통점을 갖는다. 데이터의 순서가 유지된다(인덱스로 관리된다). 데이터의 중복 저장을 허용한다. List 컬렉션에 속하는 클래스는 다음과 같다. ArrayList LinkedList Vector Stack 이어서 위 클래스에서 공통으로 사용 가능한 메서드를 보자. 또한 앞서 살펴보았던 컬렉션 인터페이스의 메서드 또한 상속받아 사용할 수 있는데, 이는 다음과 같다. ArrayList ArrayList는 가장 많이 사용되는 컬렉션 클래스로서, 내부적으로 배열을 이용하여 요소를 정리한다. 따라서 추가된 객체는 인덱스로 관리되지만, 배열과는 달리 ArrayList는 크기(용량)가 고정되지 않는다는 차이점이 있다. 또한 앞서..
자바에서 컬렉션이란 데이터의 집합, 혹은 그룹, 자료 구조를 의미한다. 컬렉션 프레임워크는 그 컬렉션을 구현하기 위한 메서드, 클래스와 인터페이스의 집합이라고 할 수 있으며 자료 구조와 데이터처리 알고리즘을 클래스로 구현한 것이라고 이해해도 된다. 컬렉션 프레임워크는 주요 인터페이스로 다음의 세 가지를 제공하는데, List 인터페이스 Set 인터페이스 Map 인터페이스 이 중에서 List와 Set 인터페이스는 Collection 인터페이스를 상속받으며 Map은 구조상의 차이가 있다. 각각의 특징을 조금 더 살펴보면 다음과 같다. List 데이터의 순서가 유지되며, 중복 저장이 가능한 컬렉션을 구현하는데 사용된다. Arraylist, Vector, Stack, LinkedList등이 List 인터페이스를 ..
제네릭(Generic) 제네릭(Generic)은 '일반적인'이라는 뜻을 지니고 있다. 자바에서 제네릭이란 타입을 내부에서 지정하는 것이 아닌 외부에서 사용자가 지정하는 것을 말한다. 필요에 의해 지정할 수 있는 일반(Generic) 타입을 사용한다는 의미이다. 예를 들면, 아래 Basket 클래스는 오직 String 타입만을 저장할 수 있다. 따라서 여러 타입의 데이터를 저장할 수 있는 객체를 만들려면, 그 수만큼 클래스를 생성해야 한다. class Basket { private String item; Basket(String item) { this.item = item; } public String getItem() { return item; } public void setItem(String item..
지난 글에 이어서 조금 더 긴 코드로 인터페이스의 장점에 대해 알아보자. 상황은 다음과 같다. 카페를 운영하는 사람이 있다. 단골은 매일 같은 음료만 먹는다 단골손님 A는 아이스 아메리카노를 먹는다. 단골손님 B는 딸기라떼를 먹는다. 위와 같은 내용을 코드로 옮겨보면 다음과 같을 것이다. class CafeCustomer { public String CafeCustomerName; public void setCafeCustomerName(String CafeCustomerName) { this.CafeCustomerName = CafeCustomerName; } } class CafeCustomerA extends CafeCustomer { } class CafeCustomerB extends CafeC..
final 키워드 영어로 '최종의', '마지막의'라는 뜻을 지니고 있는 final 키워드는 필드, 메서드, 클래스 앞에 위치할 수 있으며 각각 위치에 따라 의미가 조금씩 다르다. 조금씩 다른 의미를 지녔지만 공통적으로 변경이 불가능하고 확장할 수 없다는 특징을 가지고 있음을 알 수 있다. 이를 코드로 간략히 표현해보면 다음과 같다. final class FinalEx { // 확장/상속 불가능한 클래스 final int x = 1; // 변경되지 않는 상수 final void getNum() { // 오버라이딩 불가한 메서드 final int localVar = x; // 상수 return x; } } 정리하면 final 제어자가 앞에 붙으면 해당 대상은 더 이상 변경이나 확장이 불가능한 성질을 지니게 ..
추상화 추상화는 앞서 알아본 상속, 캡슐화, 다형성과 함께 객체지향 프로그래밍의 네 가지 기둥 중 하나이다. 자바에서의 추상화는 객체의 공통적인 속성과 기능을 추출하여 정의하는 것을 말한다. 이전에 살펴본 상속이 상위 클래스를 이용해 하위 클래스를 정의하는 것이라고 한다면, 추상화는 반대로 기존 클래스들의 공통점을 뽑아서 상위 클래스를 만들어내는 것이라고 할 수 있다. 위 그림은 추상화에 대해 잘 나타내고 있다. 자동차와 오토바이의 공통된 기능을 추출해 Vehicle이라는 클래스에 담았다고 생각하면 된다. 이런 식으로 공통적인 속성과 기능을 모아주면 코드의 중복을 줄일 수 있고, 클래스 간의 관계설정도 쉬워지며 유지/보수가 용이해진다. 자바에서의 추상화는 두 가지 문법요소를 이용해 구현되는데, 추상 클래..
이 예제는 어제 수업시간에 배운 것이다. 다형성이라는 객체 지향 프로그래밍의 개념이 어떻게 실제로 사용되는지를 쉽게 볼 수 있다. 먼저 손님이 카페에 방문하여 커피를 주문하는 상황을 가정하자. class Coffee { int price; public Coffee(int price) { this.price = price; } } class Americano extends Coffee {}; class CaffeLatte extends Coffee {}; class Customer { int money = 50000; } 하나의 멤버와 생성자를 가진 Coffee 클래스와 그 하위 클래스 Americano, CaffeLatte가 선언되어 있다. Customer 클래스는 손님을 나타내는데, 기본적으로 5만 원..
앞선 글에서 캡슐화의 목적이 데이터의 은닉 데이터의 보호 라는 것을 언급했다. Getter와 Setter 메서드는 이 캡슐화의 목적을 달성하면서도 클래스 내부의 변수에 접근하고 싶을 때 사용하는 방법이다. 즉, 외부에서 데이터로의 직접 접근이 아닌 메서드를 통한 간접 접근을 가능하게 만들어주는 메서드라 할 수 있다. 아래의 예를 보자. public class GetterSetterTest { public static void main(String[] args) { Worker w = new Worker(); w.setName("김코딩"); w.setAge(30); w.setId(5); String name = w.getName(); System.out.println("근로자의 이름은 " + name); ..
자바 프로그래밍에서 제어자(Modifier)는 클래스, 필드, 메서드, 생성자 등에 부가적인 의미를 부여하는 키워드를 말한다. '파란 하늘', '붉은 노을'에서 '파란'과 '붉은' 처럼 명사를 꾸며주는 형용사와 같다고 생각하면 편하다. 자바 프로그래밍에서 제어자는 크게 두 종류로 나뉘는데, 각각은 다음과 같다. 하나의 대상(클래스, 필드, 메서드 생성자)에는 여러 가지 제어자가 사용될 수 있으나, 접근 제어자는 하나밖에 사용할 수 없다는 것이 특징이다. 주로 static, final, abstract등을 사용하는 기타 제어자에 관해선 나중 글에 보기로 하고, 여기서는 접근 제어자에 대해서 알아보도록 하자. 접근 제어자(Access Modifier)는 자바 객체지향 프로그래밍의 캡슐화 구현을 위한 핵심적인..
- Total
- Today
- Yesterday
- 면접 준비
- 여행
- 파이썬
- Backjoon
- Algorithm
- RX100M5
- 동적계획법
- 중남미
- 야경
- 세계여행
- 지지
- 칼이사
- 세계일주
- 스프링
- BOJ
- java
- 맛집
- spring
- 자바
- 백준
- 유럽여행
- 유럽
- 세모
- 스트림
- a6000
- 남미
- Python
- 알고리즘
- 리스트
- 기술면접
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |