본문 바로가기

백엔드 기술

(37)
컬렉션과 스트림의 차이 #컬렉션 프레임 워크 #컬렉션은 여러 데이터들의 집합을 나타내며, #컬렉션 프레임워크는 특정 자료 구조에 데이터를 추가하고, 검색하고, 수정하고, 삭제하는 등의 메서드들을 미리 정의해놓고 이를 제공하는 기능이다. #스트림 배열, 컬렉션의 저장 요소를 하나 씩 참조해서 '람다식'으로 처리할 수 있도록 해주는 반복자. 즉 List, Set, Map, 배열 등의 데이터들을 흐름에 따라 우리가 원하는 결과로 가공하고 처리할 수 있다. #데이터 처리 연산을 지원하도록 #소스(컬렉션(List, Set), 배열)에서 추출된 #연속된 요소로 정의 한다. #데이터 처리 연산 filter, map, reduce, find, match, sort 등의 메서드를 통해 데이터를 조작할 수 있다. #소스 컬렉션(List, Set..
자료 구조에서 Array VS List [Array (배열)] 배열이란, 같은 특성을 갖는 원소들이 순서대로 구성된 집합으로 #선형 자료 구조이다. 메모리 상에 연속적으로 데이터가 저장된 #연접 리스트(순차 리스트)에 해당하며 순차적으로 저장된 데이터를 #Index를 사용하여 관리한다. [특징] #1. 데이터를 index로 관리한다. > 데이터에 접근이 빈번할 경우, 효율이 높다. > 연속적인 만큼 인덱스를 통해 random access가 가능하다. #2. 연속된 메모리의 공간으로 이루어져 있다. > 논리적 저장 순서(#Index)와 물리적 저장 순서(메모리 주소)가 일치한다. #3. 고정된 크기를 갖는다. > ex) 생성할 때 배열 크기를 10으로 지정하여 생성하고, 해당 배열에 실제 데이터 5개를 넣어도 메모리에서 차지하는 크기는 10 이..
List, Set, Map 의 차이점 [컬렉션 프레임 워크] 컬렉션이란, 여러 데이터의 집합 혹은 여러 데이터를 그룹으로 묶어놓은 것을 나타낸다. 컬렉션 프레임워크는 이러한 컬렉션을 다루는데 필요한 메서드들을 미리 정의해 놓은 것을 나타낸다. 즉, 특정 자료 구조에 데이터를 추가하고, 삭제하고, 수정하고, 검색하는 동작을 수행하는 편리한 메서드들을 미리 정의해 놓고 이를 제공하는 기능을 #컬렉션 프레임워크 라고 한다. #컬렉션 프레임워크에서 제공하는 주요 인터페이스로는 #List, #Set, #Map이 있으며, 이 중 #List와 #Set은 유사한 점이 많아 #Collection 이라는 인터페이스로 분류된다. #Collection 공통 인터페이스 (List와 Set 모두 사용 가능) 기능 리턴 타입 메소드 설명 객체 추가 boolean ad..
생성자란 ? [생성자] 객체를 생성하는 역할을 하는 클래스의 구성 요소. 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드라고 정리할 수 있다. new 키워드를 사용해 객체를 생성할 때 호출되는 것이 생성자이다. [규칙] 1. 생성자의 이름은 반드시 클래스 이름과 일치해야 한다. 2. 생성자는 리턴 타입이 없다. [생성자 종류] 1. [기본 생성자 = 매개변수가 없는 생성자] A. 생성자를 따로 만들지 않으면, 자바 컴파일러가 기본 생성자를 자동으로 추가한다. B. new 키워드를 사용하여 생성자를 호출하여 인스턴스를 생성할 때, 인스턴스에 원하는 필드 값을 설정 2. [매개변수가 있는 생성자] A. 클래스의 인스턴스 생성과 동시에 필드 값을 설정하여 편리하게 인스턴스 생성이 가능. B. 매개 변수가 없는 생성자..
이너 클래스의 장점 Java Inner Class (내부 클래스) 자바 이너 클래스 혹은 내부 클래스는 하나의 클래스로, 클래스나 인터페이스 내부에 선언한다. 코드를 더 읽기 쉽고, 더 오래 유지하기 위해, 논리적인 그룹과 인터페이스에서 이너클래스를 사용한다. 추가로, 이너 클래스는 외부 클래스의 private 멤버, 메서드를 포함한 모든 멤버들에 접근이 가능. 단 static 내부 클래스는 외부 클래스의 static 멤버 외에는 접근할 수 없다. [내부 클래스 장점] 1. 클래스를 논리적으로 그룹화 할 수 있다. 객체의 특성을 고려하여 연관된 단일 클래스와 관계를 맺는다면, 내부 클래스와 외부 클래스를 그룹화하여 함께 관리할 수 있다. 2. 캡슐화의 효율 상승 외부 클래스에서 private 제어자를 사용하여 외부에서의 접..
접근 제어자 객체 지향에서 정보 은닉이란 사용자가 굳이 알 필요없는 정보는 사용자로부터 숨겨야 한다는 개념. Java에서는 이러한 정보 은닉을 위해 접근 제어자라는 기능을 제공한다. 즉, 접근 제어자를 활용하면 외부에서의 직접적인 접근을 허용하지 않는 멤버를 설정할 수 있다. 접근 제어자 접근 제한 범위 public 제한 없음 protected 동일 패키지 + 다른 패키지의 하위 클래스에서 접근 가능 default 동일 패키지 내에서만 접근 가능 private 동일 클래스 내에서만 접근 가능 이를 간단하게 도식화하면 아래와 같다. 접근 제어자 클래스 내 동일 패키지 다른 패키지의 하위 클래스 패키지 외 public O O O O protected O O O X default O O X X private O X X X..
Static 키워드 [Static 키워드의 개념] Java에서 Static 키워드는 클래스의 멤버(필드, 메서드, 이너클래스)에 사용하며, 변수 앞에 사용되면 정적 변수, 메서드 앞에 사용되면 정적 메서드라고 한다. 즉, Static 키워드가 붙는 멤버는 정적 멤버라 부르고, Static 키워드가 없는 멤버는 인스턴스 멤버라 부른다. 정적 멤버는 프로그램 시작 시, 클래스 로더가 클래스를 로딩하면 메모리(Method Area/Static Area)에 할당한다. 이 클래스 로더를 이해하려면 JVM 메모리 구조를 살펴봐야 한다. [해당 포스팅 참고] https://dvdhan.tistory.com/163 JVM (Java Virtual Machine) ? JVM (Java Virtual Machine) 1. 자바 프로그램이 어..
메서드 오버라이딩 VS 오버로딩 1. 오버 라이딩 (Overriding) 상위 클래스로부터 상속받은 메서드를 동일한 메서드 이름이지만 메서드 바디를 필요에 따라 재정의 하는 것. [조건] 1. 메서드의 선언부 (메서드 이름, 매개 변수, 반환 타입)이 상위 클래스와 완전 일치 2. 접근 제어자의 범위가 상위 클래스의 메서드보다 같거나 넓어야 한다. 3. 예외는 상위 클래스의 메서드보다 많이 선언할 수 없다. public class Main { public static void main(String[] args) { Bike bike = new Bike(); Car car = new Car(); MotorBike motorBike = new MotorBike(); bike.run(); car.run(); motorBike.run(); }..