전체 글 1097

컬렉션 프레임워크 실습 { Collection 요소를 순회하는 Iterator }

Collection 요소를 순회하는 Iterator MemberArrayList.java 의 removeMember( ) 메서드를 보면 for 문과 get 메서드를 사용하여 회원을 순차적으로 하나씩 꺼내면서 매개변수와 같은 아이디를 찾습니다. 그런데 순서가 없는 Set 인터페이스를 구현한 경우에는 get(i) 메서드를 사용할 수 없습니다. 이때 Iterator 를 사용합니다. Iterator 는 Collection 인터페이스를 구현한 객체에서 미리 정의되어 있는 iterator( ) 메서드를 호출하여 참조합니다. 예를 들어 Collection 을 구현한 ArrayList 에 iterator( ) 메서드를 호출하면 Iterator 클래스가 반환되므로 다음처럼 Iterator형 변수에 대입해 사용합니다. I..

컬렉션 프레임워크 실습 { Collection 인터페이스 - List 인터페이스 - ArrayList로 스택과 큐 구현하기 }

스택과 큐란? 프로그램을 개발할 때 가장 많이 사용하는 자료구조는 stack과 queue입니다. Stack 은 상자를 쌓듯이 자료를 관리하는 방식입니다. 스택은 만 나중에 추가된 데이터를 먼저 꺼내는 LIFO(Last in First out) 방식입니다. Queue 는 '선착순'의 개념입니다. 대기열에서 먼저 추가된 데이터부터 꺼내서 사용하는 FIFO(First in First out) 방식입니다. 한편 Stack 클래스는 자바 1부터 제공했습니다. Queue 는 인터페이스로 정의되어 있고 Priority Queue 등이 구현되어 있습니다. 하지만 ArrayList나 LinkedList 클래스를 활용하여 구현하는 경우도 종종 있습니다. 자신이 직접 구현하면 사용하기 편리한 경우가 있기 때문입니다. Arr..

컬렉션 프레임워크 실습 { Collection 인터페이스 - List 인터페이스 - LinkedList 클래스 }

LinkedList 클래스 배열은 처음 배열을 생성할 때 정적 크기로 선언하고, 물리적 순서와 논리적 순서가 동일합니다. 배열은 중간에 자료를 삽입하거나 삭제할 때 나머지 자료를 이동시켜 빈 공간을 만들지 않고 연속된 자료 구조를 구현합니다. 또한 처음 선언한 배열 크기 이상으로 요소가 추가되는 경우에는 크기가 더 큰 배열을 새로 생성하여 각 요소를 복사해야 하는 번거로움이 있습니다. 이런 점을 개선한 자료 구조를 Linked List 라고 합니다. 이 자료 구조를 자바는 LinkedList 클래스로 구현하고 있습니다. LinkedList 클래스 구조 링크드 리스트의 각 요소는 다음 요소를 가리키는 주소 값을 가집니다. 따라서 물리적인 메모리는 떨어져 있어도 논리적으로는 앞뒤 순서가 있습니다. 같은 Li..

컬렉션 프레임워크 실습 { Collection 인터페이스 - List 인터페이스 - ArrayList & Vector 클래스, 스레드와 멀티스레드 }

ArrayList 와 Vector 클래스 Vector는 자바 2 이전부터 제공했으며 ArrayList 처럼 배열을 구현한 클래스입니다. ArrayList 와 Vector 의 가장 큰 차이는 동기화 지원 여부입니다. 동기화(synchronization)란 두 개 이상의 스레드가 동시에 Vector를 사용할 때 오류가 나지 않도록 실행 순서를 보장하는 것입니다. 스레드와 멀티스레드 프로그래밍 스레드란 간단히 말하면 작업 단위입니다. 프로그램이 메모리에서 수행되려면 스레드 작업이 생성되어야 합니다. 이때 하나의 스레드만 수행되면 단일 스레드(single thread)라고 하고 두 개 이상의 스레드가 동시에 실행되는 경우를 멀티스레드(multi-thread)라고 합니다. 두 개 이상의 스레드가 동시에 실행되면 ..

컬렉션 프레임워크 실습 { 컬렉션 프레임워크란?, Collection 인터페이스 - List 인터페이스 - ArrayList 클래스, 배열의 용량 }

컬렉션 프레임워크 전체적인 구조 짧게 복습하기 프로그램을 개발할 때는 자료를 어떤 구조로 관리할 것인지가 중요합니다. 그래야 프로그램의 기능을 효과적으로 구현할 수 있기 때문입니다. 이때 사용하는 것이 자료 구조(data structure)입니다. 자료 구조는 프로그램 실행 중 메모리에 자료를 유지 및 관리하기 위해 사용하는데요. 자바에서는 필요한 자료 구조를 미리 구현하여 java.util 패키지에서 제공하고 있는데, 이를 컬렉션 프레임워크(collection framework)라고 합니다. Collection 인터페이스 하위에는 List 인터페이스와 Set 인터페이스가 있습니다. List 인터페이스를 구현한 클래스는 순차적인 자료를 관리하는 데 사용하는 클래스이고, Set 인터페이스는 우리가 수학시간..

MySQL { DDL 데이터 정의어, 컬럼 데이터 타입, CREATE, ALTER ADD&DROP, DROP }

DDL 데이터 정의어 (Data definition language) 이란? 데이터 정의어는 DB의 스키마 객체를 생성하고 변경하고 제거하는 일들을 수행합니다. 현재 우리 강의에서는 테이블만 다루고 있지만 테이블 뿐만 아니라 View, index 등 다양한 객체들을 생성 변경 제거 하는 일을 수행하는 것이 데이터 정의어 입니다. 일단 우리는 테이블을 먼저 고려할 것이기 때문에 테이블을 정의할 때 필드들의 데이터 타입으로는 어떤 것들이 올 수 있는지 보아야 합니다. MySQL 데이터 타입 MySQL 에서 사용되는 데이터 타입에는 어떤 것들이 있는지 살펴보겠습니다. TINYINT, SMALLINT, MEDIUMINT, INT, INTEGER, BIGINT, FLOAT, DOUBLE, DATE, DATETIM..

MySQL { Insert, Update, Delete }

Insert 문 INSERT 문을 살펴보겠습니다. INSERT 문을 사용할 때 필드와 필드 값의 매핑을 확인해야한다. 또한 필드명은 생략할 수 있는데, 이 경우 모든 필드의 값을 입력해야한다. 반대로 얘기하면 원하는 필드만 Insert 할 때는 필드 명을 지정해야한다. 필드명을 지정해주는 방식을 사용할 때 디폴트 값은 생략할 수 있다. 실습을 진행해 보겠습니다. ROLE 이라는 테이블의 role_id, description 컬럼에 200, 'CEO' 라는 값을 넣어주는 insert 구문입니다. 또 주의할 점이 하나 있습니다. 내가 원하는 컬럼을 지정하여 값을 검색할 때 Not Null 조건이 있는 컬럼을 포함하는 방식으로 값을 지정해야 Null 값으로부터 오는 오류를 방지할 수 있습니다. role 테이블..

MySQL { SELECT 그룹함수 & groupby 절}

Select 그룹함수 그룹함수는 여러 개의 컬럼의 값을 가지고 결과 값을 하나만 만들어내는 것을 의미합니다. Count, Avg, Min, Max, Sum, Group_concat, Variance, Stddev 등이 있습니다. 결과가 하나만 나오는 것이 그룹함수의 특징입니다. count 함수의 특징은 Null 값을 제외하고 카운트를 합니다. 그래서 다음과 같은 현상을 볼 수 있는데요. 실제로 boss 라는 컬럼에는 14개의 행이 있는데, Count의 값으로는 13이 출력되고 있는 것을 확인할 수 있습니다. Null이 아닌 것만 count 한다는 것을 알 수 있습니다. 이런 특성 때문에 전체 행이 몇개인지 알고 싶다면 전체 컬럼을 기준으로 count 를 진행해주어야 합니다. 이렇게 말이죠. 특정 컬럼의 ..

MySQL { DML 데이터 조작어 종류, SELECT 조건&함수&형변환}

데이터 조작어의 종류 데이터 조작어는 4종류가 있습니다. 조작어는 모두 동사로 시작합니다. Select, Insert, Update, Delete 조작어가 있습니다. Select 구문의 기본문형 Select 의 기본문형은 다음과 같습니다. Select * 컬럼명에는 * 를 사용할 수 있으며 모든 컬럼을 보고 싶을 때 사용합니다. DBMS에 접속을 하구요. Select * from department; 를 수행한 결과는 다음과 같습니다. Select c1, c2 특정 컬럼들만 지정해서 보고 싶다면 콤마 , 를 이용해서 보고 싶은 컬럼들을 나열할 수 있습니다. Select AS 출력되는 컬럼명들을 내가 지정한 것으로 보고 싶다면 alias(as)를 이용할 수 있습니다. DBMS를 잘 모르는 사람들도 이해할 ..

MySQL { 테이블의 구성 요소, 테이블 생성 & 값의 저장, use db, show tables }

테이블의 구성 요소 MySQL 은 RDBMS 로 관계형 데이터베이스입니다. 관계형 데이터베이스는 데이터를 테이블 형태로 저장을 하게 됩니다. 테이블이 RDBMS 의 기본적인 저장 구조이며 한 개 이상의 컬럼과 0개 이상의 Row로 구성되어 있습니다. 테이블 : RDBMS의 기본적 저장구조. 한 개 이상의 column 과 0개 이상의 row 로 구성됨. 열 Column : 테이블 상에서의 단일 종류의 데이터를 나타냄. 특정 데이터 타입 및 크기를 가지고 있음. 행 Row : Column 들의 값의 조합이다. 레코드라고 부른다. 기본키(PK)로 구분되면 기본키는 중복될 수 없다. 필드 Field : Row 와 Column 의 교차점으로 Field 는 데이터를 포함할 수 있으며 포함할 수 없을 때는 NULL ..