✎NHN Academy | JAVA

NHN Academy - 2024.09.02(Mon)

박순돌 2024. 9. 2. 17:27

Module 14 Collections Framework

객체지향 = Object를 가지고 프로그래밍을 하는 것(모든 것을 객체로 만들어서 이에 대한 상호작용을 나타내는 것)

프로그래밍을 해서 가장 효율적인 방법을 찾아내는 것이 중요!!   ( → 현재는 연산을 가장 작게 하는 것이 효율적이라고 보는 중 )

 

Java Collections Framework

→  철저히 테스트된 다양한 인터페이스와 클래스로 구성

→  클래스는 널리 사용되는 데이터 구조 및 알고리즘을 나타냄

→  Collection이 필요한 대부분의 응용 프로그램에 대해 프레임워크는 적절한 클래스를 제공

 

추상 클래스

→  AbstractCollection, AbstractList, AbstractSet등의 추상 클래스 제공

→  정의가 하위 클래스의 필드에 의존하는 모든 메소드를 추상으로 제공하고 해당 필드에 의지하지 않는 메소드를 정의

 

타입 파라미터  →  타입 파라미터를 사용하는 지네릭스 타입으로 선언됨

 

스택의 문제점? → 10개를 이상을 넘어가면 코드가 복잡해진다! ( = 대신 list를 사용한다 )

 

List

장 : 읽는 속도 빠름

단 : 정확한 위치 X(엉뚱한 데이터 가져옴)

수정 / 삭제할 때의 효율성 떨어짐

 

배열은 처음 생성할 때 사이즈를 정하면, 나중에 사이즈를 변경할 수 없다!

 

iterable 을 붙이는 위치  =  모든 List가 iterable 인 것이 편하다. (즉, iterable은 List에 붙이자!)

 

 

**인터페이스 / 이터러블 차이점**

인터페이스 ( = interface )

 : 다른 클래스를 작성할 경우 기본이되는 틀을 제공

 : 다른 클래스 사이의 중간매개 역할까지 담당하는 추상클래스

 

이터러블  ( = iterable )

 : 이터레이터를 리턴하는 [Symbol.iterator]() 메서드를 가진 객체

 : Array.prototype 의 Symbol.iterator 를 상속받기 때문에 배열, 문자열은 이터러블

 

이터레이터 ( = iterator )

 : {value : 값 , done : true/false} 형태의 이터레이터 객체를 리턴하는 next() 메서드를 가진 객체

 : next 메서드로 순환 할 수 있는 객체로, [Symbol.iterator]() 안에 정의

 

 

 

배열을 이터러블로 만드는 가장 쉬운 방법!!

public java.util.Iterator<E> iterator() {

        return Arrays.stream(this.elements).iterator();

}

 

JAVA에서 Type이 될 수 있는 것들          1. 클래스   2. 추상클래스   3. 인터페이스   4. enum

ADT = 클래스의 타입                               EX>      Type t      =       new Instance();

                                                                       ADT(Interface)              class

애자일 방법 : 개발 주기를 빠르게 돌리자!

알고리즘 : 어떠한 동작이 가장 효율적으로 동작한다고 가정하는 것

 

JAVA 자체에 존재하는 리스트 : add(), isEmpty(), get(), indexof(), remove(), set(), replaceAll()

↑ import java.util.List;

 

ArrayList를 만들 때, 50개를 만들고 난 뒤에 다른 메모리를 할당 받는다.

장 : 한 번 메모리를 할당받으면, 한동안은 메모리를 할당받지 않아도 된다.

단 : 5개만 작성하려고 해도, 꼭 50개를 할당받아야 한다.

 

public interface List<E> {
    void add(E item);
    E get(int index);
    void remove(int index);
    int size();
    boolean isEmpty();
    void clear();
}
// List를 구현할 때 꼭 필요한 요소들

 

***ArrayList와 LinkedList의 내부 구현은 아예 다른데, add하고 remove하면 동작하는 행동은 같다***

 

***Open And Close***

 

                                                    Book.java         ← →        Book.csv

 

                             Books.java         ← →        App.java

                                                                        ★ forEach()

                                                                        ★ compareTo()



 

 

Module 15 객체지향 프로그래밍

 

'✎NHN Academy | JAVA' 카테고리의 다른 글

NHN Academy - 2024.09.04(Wed)  (0) 2024.09.04
NHN Academy - 2024.09.03(Tue)  (0) 2024.09.03
NHN Academy - 2024.08.30(Fri)  (0) 2024.08.30
NHN Academy - 2024.08.29(Thu)  (0) 2024.08.29
NHN Academy - 2024.08.28(Wed)  (1) 2024.08.28