Java
[Java] Stack과 Queue
1. Stack과 Queue 스택은 마지막에 저장한 데이터를 가장 먼저 꺼내는 LIFO(Last In First Out)의 구조리며, 큐는 처음에 저장한 데이터를 가장 먼저 꺼내게 되는 FIFO(FIrst In FIrst Out)의 구조이다. 예를 들면 스택은 웹 브라우저의 방문기록 (뒤로가기), 나중에 실행된 것부터 나중에 취소하는 실행 취소와 같은 곳에 활용할 수 있다. 큐는 프린터의 인쇄 대기열같은 우선순위가 같은 작업 예약, 프로세스 관리와 같은 입력 순서대로 처리해야할 필요가 있는 상황에 이용한다. - Stack 메서드 메서드 설명 boolean empty() Stack이 비어있는지 알려준다 . Object peek() Stack의 맨 위에 저장된 객체를 반환. pop과 달리 Stack에 객체를..
[Java] LinkedList
1. LinkedList (링크드리스트) 배열은 구조가 간단하여 사용하기 쉽고 데이터를 읽어오는데 걸리는 시간이 가장 빠르다는 장점을 가지고 있지만, 다음과 같은 단점을 가지고 있다. 크기를 변경할 수 없다. - 크기를 변경할 수 없으므로 새로운 배열을 생성해 데이터를 복사해야한다. 비순차적인 데이터의 추가 또는 삭제에 시간이 많이 걸린다. - 차례대로 데이터를 추가하고 , 마지막부터 삭제하는 것은 빠르지만, 배열의 중간에 데이터를 추가하려면 빈자리를 만들기 위해 다른 데이터들을 복사해서 이동해야한다. 이러한 배열의 단점을 보완하기 위해서 LinkedList라는 자료구조 형태가 나왔다. 링크드리스트는 메모리상에서 불연속적으로 존재하는 데이터를 서로 연결한 형태로 구성되어있다. 링크드리스트의 각 요소(No..
[Java] ArrayList
1. ArrayList ArrayList는 List 인터페이스를 구현하기 때문에 데이터의 저장순서가 유지되고, 중복을 허용한다는 특징을 갖는다. ArrayList는 Object 배열을 이용해 데이터를 순차적으로 저장한다. 배열에 더 이상 저장할 공간이 없으면 보다 큰 새로운 배열을 생성해 기존의 배열에 저장된 내용을 새로운 배열로 복사한 다음에 저장한다. 메서드 설명 ArrayList() 크기가 10인 ArrayList를 생성(디폴트) ArrayList(Collection c) 주어진 컬렉션이 저장된 ArrayList를 생성 ArrayList(int initialCapacity) 지정된 컬렉션이 저장된 ArrayList를 생성 boolean add(Object o) ArrayList에 마지막에 객체를 추..
[Java] 컬렉션 프레임워크 (Collection Framework)
1. 컬렉션 프레임워크컬렉션 프레임워크(Collection Framwork)이란 데이터를 저장하는 클래스들을 표준화한 설계를 말한다. 컬렉션은 데이터 그룹을 프레임워크는 표준회된 프로그래밍 방식을 의미한다.컬렉션 프레임워크는 다수의 데이터를 다루는데 필요한 다양하고 풍부한 클래스들을 제공하기 때문에 프로그래머의 짐을 덜어주고, 인터페이스와 다양한 객체지향적 설계를 통해 표준화되어있기때문에 사용법을 익히기에도 편리하다.1.1 컬렉션 프레임워크의 핵심 인터페이스컬렉션 프레임워크에서는 컬렉션 데이터 그룹을 크게 3가지 타입이 존재한다고 인식하고 각 컬렉션을 다루는데 필요한 기능을 가진 3개의 인터페이스를 정의하였다. 그리고 인터페이스 List와 Set의 공통된 부분을 다시 뽑아서 새로운 인터페이스인 Colle..
[JAVA] 다차원 배열
1. 다차원 배열 (Multi- dimension) 1.1 2차원 배열의 선언과 인덱스 2차원 배열은 주로 테이블 형태의 데이터를 담는데 사영되며, 만약 4행 3열의 데이터를 담기위한 배열을 생성하려면 다음과 같이 하면 된다. 2차원 배열의 요소에는 int의 기본값인 0이 저장된다. int[][] score = new int[4][3]; //4행 3열의 2차원 배열 2차원 배열의 index 2차원 배열은 행(row)과 열(column)으로 구성되어 있어 index도 행과 열에 각각 존재한다. 행index의 범위는 0 ~ 행의 길이-1, 열index의 범위는 0~열의 길이-1 이다. 각 요소에 접근하는 방법은 배열이름[행index][열index]이다. 이렇게 배열을 생성하면 score[0][0] ~ sco..
[Java] String 배열
1. String 배열 1.1 String 배열의 선언과 생성 String[] name = new String[3]; // 3개의 문자열을 담을 수 있는 배열 생성 3개의 String 타입의 참조변수를 저장하기 위한 공간이 마련되고 참조형 변수의 기본값은 null이므로 각 요소의 값은 null로 초기화된다. 참고로 null은 어떠한 객체도 가리키고 있지 않다는 뜻이다. 1.2 String 배열의 초기화 Stirng[] name = new String["kim", "king", "dong"] Stirng[] name = {"kim", "king", "dong"} String 배열의 경우 int 배열과 동일한 방법으로 한다. 배열에 실제 객체가 아닌 객체의 주소가 저장되어 있는 것을 볼 수 있다. 이처럼 기..
[Java] 배열(Array)
1. 배열(Array) 1.1 배열(Array)이란? 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 ‘배열’이라고 한다. 변수와 달리 배열은 각 저장공간이 연속적으로 배치되어 있다. int[] score = new int[5] //5개의 int값을 저장할 수 있는 배열을 생성한다. 참고로 변수 score은 배열을 다루는데 필요한 참조변수일 뿐 값을 저장하기 위한 공간은 아니다. 그리고 score에는 배열 score[0]의 주소가 저장된다. 1.2 배열의 선언과 생성 //배열을 선언(배열을 다루기 위한 참조변수 선언) 타입[] 변수이름; int[] score; //배열을 생성(실제 저장공간을 생성) 변수이름 = new 타입[길이]; score = new int[5]; //배열의 선언과 생성을 동시에..
객체지향 설계 5원칙 - SOLID
SOLID는 객체 지향 설계의 5가지 원칙을 말한다. SRP( Single Responsibility Principle, 단일책임원칙) 한 클래스에는 하나의 책임만 가져야 한다. 즉, 클래스를 변경하는 이유는 하나여야한다. 예를 들어 한 클래스 내에 A메소드가 있고 ,이 A메소드의 결과로 호출하는 B메소드 , 그리고 B메소드로 호출하는 C메소드가 존재할때, A메소드를 수정한다면 B와 C 메소드를 수정해야 할 상황이 발생할 수 있다. 이는 유지보수가 매우 비효율적이므로 잘 분리해야한다. OCP(Open - Closed Principle, 개방- 폐쇄 원칙) 확장에는 열려있느나 변경에는 닫혀있어야한다. 즉 , 코드를 수정하기 보다 반드시 새로운 코드를 추가하는 방식으로 설계해야 한다. 예를 들어 어떤 모듈의..