[Java 자료구조] List 인터페이스 활용
·
Java & Kotlin
예제 코드 멤버십 관리 프로그램 Member.java package ch11; public class Member { private int memberId; private String memberName; public Member(int memberId,String memberName) { this.memberId = memberId; this.memberName= memberName; } public int getMemberId() { return memberId; } public void setMemberId(int memberId) { this.memberId = memberId; } public String getMemberName() { return memberName; } public void..
[Java 자료구조] 컬렉션 프레임워크
·
Java & Kotlin
컬렉션 프레임워크 (Collection Framework) 프로그램 구현할 때 필요한 자료구조를 구현해놓은 JDK 라이브러리 java.util 패키지 안에 구현되어 있다. 여러 구현 클래스와 인터페이스의 활용에 대한 이해가 필요하다. Collection 인터페이스 하나의 요소를 관리하기 위해 사용한다. List 인터페이스 : 순서에 기반하여 요소를 저장하고 관리, 중복 허용 Set 인터페이스 : 순서에 관계 없이 중복을 허용하지 않고 유일한 요소를 관리 (e.g. 아이디, 주민번호, 사번..) Map 인터페이스 key-value 쌍으로 이루어진 요소를 관리하는데 사용(dictionary) key값은 중복을 허용하지 않음 Iterator 인터페이스 List는 for문을 이용해서 get[i] 메서드로 요소를..
[Java 자료구조] 제네릭 메서드 활용
·
Java & Kotlin
제네릭 메서드 자료형 매개 변수를 메서드의 매개 변수나 반환 값으로 가지는 메서드이다. 자료형 매개 변수가 여러 개일 수 있다. 제네릭 클래스가 아니더라도, 메서드를 정의할 때 제네릭 메서드로 구현할 수 있다. public int method(int parameter) {} // 제네릭 메서드 선언 예제 코드 두 점을 기준으로 사각형을 만들 때, 사각형의 너비를 구하는 메서드를 만들어본다. 각 좌표는 정수인 경우도 있고 실수인 경우도 있기 때문에 제네릭 메서드로 구현한다. Point.java 좌표를 구현한 제네릭 클래스 package ch09; public class Point {// 자료형 매개변수가 두개인 제네릭 클래스 T x; V y; Point(T x, V y) { this.x = x; this...
[Java 자료구조] 제네릭 프로그래밍에서의 자료형 제한
·
Java & Kotlin
[Java 자료구조] 제네릭 프로그래밍 제네릭 프로그래밍 클래스에서 사용되는 변수의 자료형이 여러 개 일 수 있고, 그 기능(메서드)는 동일할 때 자료형을 특정짓지 않고 클래스를 사용할 때 자료형을 지정하도록 선언하는 것 자료 suaring.tistory.com 지난번 구현한 제네릭 프로그래밍에서는 모든 자료형이 GenericPrinter의 매개변수로 들어갈 수 있다. 하지만 프린터는 재료만 매개변수로 받을 수 있다. 이처럼 자료형의 범위를 제한하기 위해 를 사용한다. 자료형의 범위를 제한할 수 있다. 상위 클래스에서 선언하거나 정의하는 메서드를 활용할 수 있다. 상속을 받지 않는 경우 T는 Object로 변환되어 Object 클래스가 기본으로 제공하는 메서드만 사용할 수 있다. 상위 클래스 생성 Pla..
[Java 자료구조] 제네릭 프로그래밍
·
Java & Kotlin
제네릭 프로그래밍 클래스에서 사용되는 변수의 자료형이 여러 개 일 수 있고, 그 기능(메서드)는 동일할 때 자료형을 특정짓지 않고 클래스를 사용할 때 자료형을 지정하도록 선언하는 것 자료형의 변환이 컴파일러에 의해 검증되므로 안정적인 프로그래밍 방식이다. 컬렉션 프레임워크에서 많이 사용되고 있다. 변수의 자료형이 여러 개인 경우 제네릭 타입을 사용하지 않으면 그에 따라 클래스도 여러개 생성해야 하므로 오버헤드가 발생한다. 예제 코드 재료를 매개변수로 받는 3D 프린터 구현해보기 제네릭 프로그래밍으로 구현하지 않을때 Powder.java public class Powder { public String toString() { return "재료는 Powder입니다"; } } ThreeDPrinter.java..
[Java 자료구조] 큐 구현해보기
·
Java & Kotlin
큐(Queue) 구현해보기 연결 리스트 구현한 MyLinkedList를 활용하여 큐를 구현해본다. 큐의 연산에는 데이터를 rear의 위치에 넣는 enQueue() 메서드와 front 위치의 데이터를 출력하는 deQueue() 메서드가 있다. MyLinkedQueue.java package ch05; import ch03.MyLinkedList; import ch03.MyListNode; interface Queue{ public void enQueue(String data); public String deQueue(); public void printQueue(); } public class MyLinkedQueue extends MyLinkedList implements Queue{ MyListNode..
[Java 자료구조] 스택 구현해보기
·
Java & Kotlin
스택(Stack) 구현해보기 배열을 구현한 MyArray 클래스를 이용하여 스택을 구현해본다. 스택의 연산에는 top에 자료를 삽입하는 push(), top-1의 자료를 반환하여 제거하는 pop(), 값을 반환만 해주는 peek() 메서드가 있다. MyArrayStack.java 연결 리스트는 메모리를 그때그때 할당받기 때문에 꽉 찼는지 여부를 확인해주지 않아도 되지만 배열은 체크해주어야 한다. package ch04; import ch02.MyArray; public class MyArrayStack { MyArray arrayStack; int top; public MyArrayStack() { top = 0; arrayStack = new MyArray(); } public MyArrayStack(..
[Java 자료구조] 연결 리스트 구현해보기
·
Java & Kotlin
연결 리스트(linked-list) 구현해보기 연결 리스트의 연산 중 노드를 추가하고, 제거하여 꺼내보는 addElement(), removeElement() 메서드와 중간에 노드를 삽입하는 insertElement() 메서드를 구현해본다. 헤드는 첫번째 노드를 가리키는 더미 노드 또는 헤드 자체가 첫번째 노드가 될 수 있는데, 후자의 경우로 구현한다. 먼저 removeElement()를 구현하기 위해서는 제거할 노드의 전 노드가 다음 노드를 가리키게 함으로써 구현할 수 있다. insertElement()의 경우 추가할 위치의 전 노드의 링크를 추가할 노드로 연결해야 하고 추가할 노드의 링크는 전 노드의 링크로 연결해야 한다. 결국 중간 요소를 변경하는 두가지 연산 모두 previous node(전 노드..
[Java 자료구조] 배열 구현해보기
·
Java & Kotlin
배열(Array) 구현해보기 배열에서의 연산 중 요소들을 한 칸씩 뒤로 미루고 원하는 위치에 요소를 삽입하는 insertElement() 메서드와 원하는 위치의 요소를 삭제하여 나머지 요소를 한칸씩 앞으로 당겨오는 removeElement() 메서드를 구현해본다. 기본 변수 정수 배열을 나타내는 intArr와 배열의 개수를 나타내는 count를 선언한다. ARRAY_SIZE는 배열이 생성될 때 할당되는 크기이다. 이때 요소의 개수가 배열의 크기만큼 다 들어있지 않을 수 있으므로 ARRAY_SIZE >= count이다. ERROR_NUM은 연산 오류 시 출력되는 값이다. int[] intArr; // int array int count; // element 개수 public int ARRAY_SIZE; p..