JAVA (15) 썸네일형 리스트형 자바_Map 인터페이스 1. Map 인터페이스란? : Map 인터페이스는 자료를 쌍(pair)으로 관리하는 데 필요한 메소드가 정의되어 있다. Key - Value 쌍으로 이루어진 객체의 Key 값은 유일하며 Value 값은 중복될 수 있다. 그리고 Key 값으로 해당 데이터를 탐색한다. Map 인터페이스를 구현한 클래스는 내부적으로 해시 알고리즘에 의해 구현되어 있다. 그러면 가장 많이 사용하는 HashMap 클래스부터 살펴보겠다. 2. HashMap Key - Value 형태로 이루어짐 중복 키 지원하지 않음 new HashMap(); 해시 방식의 자료를 저장하는 공간을 해시 테이블이라고 함 자료 추가 속도나 검색 속도가 상당히 빠르다는 장점이 있음 ex) import java.util.HashMap; public clas.. 자바_Set 인터페이스 1. Set 인터페이스란? : 순서와 상관없이 중복을 허용하지 않는 경우에는 Set 인터페이스를 구현한 클래스를 사용한다. 우리가 사용하는 데이터 중에 중복을 허용하지 않는 데이터는 어떤 것이 있을까? 회원 아이디, 주민등록번호, 사번 등은 중복되면 안 될 것이다. Set 인터페이스를 구현한 대표 클래스에는 HashSet와 LinkedSet, 그리고 TreeSet이 있다. 오늘 포스팅에서는 import를 사용하여 각각의 Set 인터페이스를 구현해 보도록 하겠다. 2. HashSet 중복 데이터 허용 안 함 정렬되지 않음 null 삽입 허용 ex) import java.util.HashSet; public class Main { public static void main(String[] args) { Ha.. 자바_Priority Queue 1. 우선순위 큐(Priority Queue)란? : 일반적으로 큐는 앞선 포스팅에서도 볼 수 있듯이, 데이터를 일시적으로 쌓아두기 위한 자료구조로 FIFO(First In First Out)의 구조, 즉 먼저 들어온 데이터가 먼저 나가는 구조를 가진다. 오늘 살펴볼 PriorityQueue는 먼저 들어온 순서대로 데이터가 나가는 것이 아닌 우선순위를 먼저 결정하고 그 우선순위가 높은 요소가 먼저 나가는 자료구조이다. 2. 사용 방법 자바에서 우선순위 큐 라이브러리를 사용하고 싶다면 java.util.PriorityQueue 를 import 하고 Queue queue = new Queue()와 같은 형식으로 선언하면 된다. 오늘 포스팅에서는 지난 번과 마찬가지로 import가 아닌 직접 구현해 보도록 하.. 자바_Queue 1. 큐(Queue)란? : Queue는 사전적으로 "줄을 서다"를 의미한다. 줄을 서서 기다린다는 것처럼 먼저 들어오면 데이터가 먼저 나가는 형식이며, 일명 FIFO(FirstInFirstOut) 방식이다. 위의 그림에서 볼 수 있듯이 큐는 앞과 뒤가 다른 역할을 수행한다. 큐의 앞 부분인 front는 삭제 연산만 수행 큐의 뒷 부분인 rear는 삽입 연산만 수행한다. 2. 구현 방식 지난 번과 마찬가지로 자바를 통해 import 방식이 아니라 직접 구현해 보도록 하겠다. [MyQueue.java] public class MyQueue { // 배열 길이 5로 고정 private final int LEN = 5; private int[] arr = new int[LEN]; // front와 rear 변.. 자바_Stack 1. 스택(Stack)이란? : 스택은 기본 자료구조 중 하나로, 줄을 지어 마지막으로 들어온 데이터가 가장 먼저 나오는 특징을 가지고 있다. 즉 LIFO(Last-In First-Out) 동작으로 이뤄진다. 2. 사용 방법 1) 스택을 사용하는 방법은 간단하다. import를 이용하여 Stack을 불러온 다음 기본 정의에 맞게 코드를 짜면 된다. 다음은 해당 방법을 이용한 예제이다. import java.util.Stack; public class Main { public static void main(String[] args) { // sample이라는 스택 객체를 생성 Stack sample = new Stack(); // push를 통해 넣고 싶은 값은 무조건 제일 위쪽에 추가! sample.pu.. 자바_Linked List 1. 링크드 리스트(Linked List)란? - 연결 리스트(LinkedList)는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식의 자료구조이다. 데이터를 담고 있는 노드들이 연결되어 있고, 노드의 포인터가 이전 노드와 다음 노드와의 연결을 담당한다. - 중간에 데이터를 추가나 삭제하더라도 전체의 인덱스가 한 칸씩 뒤로 밀리거나 당겨지는 일이 없기에 ArrayList에 비해서 데이터의 추가나 삭제가 용이하나, 인덱스가 없기에 특정 요소에 접근하기 위해서는 순차 탐색이 필요로 하여 탐색 속도가 떨어진다는 단점이 있다. 2. 구현 방법 오늘 학원에서 배운 링크드 리스트를 자바로 직접 구현한 것을 포스팅해 보도록 하겠다. [Node.java] public class Node { // // .. 자바_제네릭(Generic) 1. 제네릭(Generic)이란? : 자바에서 제네릭(generic)이란 데이터의 타입(data type)을 일반화한다(generalize)는 것을 의미한다. 제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법이다. 이렇게 컴파일 시에 미리 타입 검사(type check)를 수행하면 다음과 같은 장점을 가진다. 2. 선언 방법 및 실행 public class man { private T name; //이름 필드 private T bloodtype; //혈액형 필드 public T getName() { return name; } public void setName(T name) { this.name = name; } public T getBloodtype() { retu.. 자바 (Collection Framework) 컬렉션 프레임워크(Collection Framework)란? : 배열을 사용하다 보면 여러가지 비효율적인 문제가 생긴다. 가장 큰 문제점은 크기가 고정적이라는 것이다. 배열의 크기는 생성할 때 결정되며 그 크기를 넘어가게 되면 더이상 데이터를 저장할 수 없다. 또한 데이터를 삭제하면 해당 인덱스의 데이터는 비어있어 메모리가 낭비되는 등 여러 문제점들이 발생한다. 그렇기에 자바는 배열의 이러한 문제점을 해결하기 위해, 널리 알려져 있는 자료구조를 바탕으로 객체나 데이터들을 효율적으로 관리(추가, 삭제, 검색, 저장)할 수 있는 자료구조들을 만들어 놓았다. 이러한 자료구조들이 있는 라이브러리를 컬렉션 프레임워크라고 한다. 대표적으로는 List, Set, Map, Stack, Queue 등이 있는데, 오늘은 .. 이전 1 2 다음