본문 바로가기

Old Posts226

[Java] Vector 사용법 및 예제 Vector Vector 클래스는 ArraList 클래스처럼 List 인터페이스를 구현하고 있다. Vector 클래스는 ArrayList와 동일한 방법으로 데이터를 저장하고 있다. ArrayList처럼 저장 순서를 기억하고, 중복 데이터의 저장을 허용한다. 인덱스를 통해 특정 위치에 데이터를 추가하거나 특정 위치의 데이터를 제거할 수도 있다. Vector 객체 역시 데이터가 추가되면서 필요한 경우 자동으로 크기가 늘어나도록 구현되어 있다.(참고 : [Java] ArrayList 사용법 및 예제) ArrayList 클래스와 Vector 클래스는 큰 차이가 없다고 생각해도 된다. 다만 Vector 클래스는 멀티스레드 환경에서 동기화처리가 되어 있다. 반면 ArrayList 클래스는 멀티스레드 환경에 대한 고.. 2021. 5. 29.
[Java] PriorityQueue(우선순위 큐) 사용법 및 예제 Priority Queue(우선순위 큐) 일반적으로 '큐(Queue)'라는 자료구조는 먼저 들어온 순서대로 데이터가 소비된다. 즉 FIFO(First In First Out)의 동작을 갖는다. 큐와 비슷한 '우선순위 큐(Priority Queue)'라는 자료구조는 들어온 순서가 아닌 저장되어 있는 데이터 중 우선순위가 높은 순서대로 데이터가 소비된다. 'Priority Queue(우선순위 큐)'는 일반적으로 힙(Heap)이라는 자료구조를 이용해서 구현한다. 입력받은 데이터를 이용해서 최대힙 혹은 최소힙을 구성하고 데이터를 꺼낼때 루트노드에서 꺼낸다. 꺼내진 루트 노드에는 힙의 마지막 노드가 삽입되어 아래로 내려가면서 자기 자리를 찾아간다. Priority Queue는 내부적으로 힙을 이용해서 정렬된 상태.. 2021. 5. 28.
[Java] LinkedList 사용법 및 예제 list.remove(); // 첫 번째 값 제거 list.remove(3); // 3번째 값 제거 list.removeFirst(); // 첫번째 값 제거 list.lastFirst(); // 마지막 값 제거 list.clear(); // 모든 값 제거 LinkedList LinkedList(연결리스트)는 데이터가 저장되어 있는 노드(Node) 객체들을 참조 체인으로 엮어 놓은 자료구조다. LinkedList 객체 안쪽에는 노드들이 참조 체인으로 연결되어 있다. 각 노드들은 다음에 위치한 노드들의 참조를 들고 있다. 사용자는 LinkedList의 첫 번째 노드부터 따라가면서 원하는 데이터를 조회하게 된다. ArrayList와 다르게 중간에 데이터가 추가되거나 중간에 있는 데이터가 삭제되어도 앞으로 땡기.. 2021. 5. 27.
[Java] InputStream 객체와 File 객체 상호 변환하기 자바 프로그래밍에서 InputStream 객체를 File 객체로 만들거나 File 객체를 InputStream 객체로 만들어야 할 경우가 종종있다. 사용하고자하는 API에서 어떤 객체를 입력으로 받는지에 따라 상호변환이 필요할 수 있다. File 객체에서 InputStream 객체 얻기 우선 File 객체를 InputStream 객체로 만들어보자. File file = new File("path to file"); InputStream inputStream = new FileInputStream(file); FileInputStream 객체를 생성할 때, File 객체를 넘겨주면 된다. 간단한 사용법이다. InputStream 객체에서 File 객체 만들기 InputStream 객체는 어디에선가 데이터를.. 2021. 5. 26.
[Java] ArrayList 사용법 및 예제 ArrayList 자바 프로그램에서 데이터의 나열을 저장하기 위해서 List 인터페이스를 구현한 클래스를 사용한다. ArrayList는 List 인터페이스를 구현하는 리스트로 배열처럼 연속된 메모리 공간을 사용하며, 인덱스를 이용해서 특정위치의 데이터에 바로 접근할 수 있다. 한번 생성되면 크기가 변하지 않는 배열과는 달리 객체가 추가되면서 필요할 경우 자동으로 크기가 늘어나도록 내부적으로 구현되어 있다는게 ArrayList 클래스의 특징이다. 리스트 자료구조를 만들고 싶을 때, 가장 많이 사용되는 클래스다. ArrayList 사용법 ArrayList 생성 import java.util.ArrayList; 자바는 java.util.ArrayList 클래스를 통해 ArrayList를 제공하고 있다. Arr.. 2021. 5. 24.
[Java] Stack(스택) 사용법 및 예제 Stack(스택) 사전적으로 Stack(스택)은 '쌓다', '더미'라는 의미를 가지고 있다. 접시를 차곡차곡 쌓아 올리듯이 데이터를 쌓아올리는 형상을 생각하면 된다. Stack(스택)은 Queue(큐)와 함께 자바에서 사용되는 가장 기본적인 자료구조 중 하나다. Stack(스택)은 '마지막에 추가된 데이터가 가장 먼저 나오는' 특징을 가지고 있다. LIFO(Last In First Out) 동작이라고 한다. 함께 많이 사용되는 Queue(큐)의 경우 먼저 추가된 데이터가 먼저 나오는 FIFO(First In First Out) 동작을 갖는것과 비교된다. 일반적으로 스택에 데이터를 추가하는 동작은 'push'라고 하며, 스택에서 데이터를 빼는 동작은 'pop'이라고 한다. pop 메소드를 실행하면 가장 마.. 2021. 5. 23.
[Linux] smartctl 명령을 이용한 디스크 점검 smartctl 명령어는 SMART(Self-Monitoring, Analysis, and Reporting Technology) 기능으로 하드디스크를 점검하는 도구다. 리눅스와 윈도우에서 사용가능하다. smart 설치 - 윈도우 윈도우용 smartctl 설치파일은 smartmontools.org/wiki/Download 페이지에서 다운로드할 수 있다. 페이지에 들어가서 Install the Windows package 섹션을 보면 NSIS-installer 링크를 확인할 수 있다. here 버튼을 누르면 https://sourceforge.net/projects/smartmontools/files/ 링크가 열린다. Download Lastest Version 버튼을 클릭해서 다운로드하고 설치해주면 된다.. 2021. 5. 19.
[Java] Queue 클래스 사용법 & 예제 Queue(큐) 사전적으로 Queue(큐)는 (무엇을 기다리는 사람자동차 등의)줄이란 뜻이다. 자료구조에서 Queue(큐)는 처리를 기다리는 데이터들이 기다리는 줄이라고 보면 된다. 스택(Stack)과 더불어 가장 많이 사용되는 자료구조 중 하나로 FIFO(First In First Out) 형태로 데이터가 처리된다. 즉, 먼저 들어온 데이터가 먼저 처리된다. 큐에 데이터를 집어 넣는 동작을 'enqueue'라고 한다. 큐의 맨 뒤에 데이터를 추가하는 동작이다. 큐에서 데이터를 빼내는 동작은 'dequeue'라고 한다. 가장 앞에 있는 데이터가 dequeue 연산을 통해 큐에서 제거된다. enqueue 연산은 항상 데이터를 큐의 맨 뒤에만 추가한다. dequeue 연산은 큐의 맨 앞에 있는 데이터만 뽑아.. 2021. 5. 18.
[Java] 문자열 to 정수 변환 - valuOf()와 parseInt() 차이 자바 프로그래밍을 하다보면 문자열 형태로 표현된 정수 데이터를 파싱해서 정수타입(int)으로 사용해야하는 경우가 자주 있다. 이 경우 valueOf() 메소드와 parseInt() 메소드를 사용하게 된다. 이 두 메소드의 차이점을 알아보자. int number1 = Integer.valueOf("100"); System.out.println("number1 = " + number1); int number2 = Integer.parseInt("100"); System.out.println("number2 = " + number2); "100"이라는 문자열을 정수타입(int)으로 변환하기 위해서는 위 코드처럼 Integer.valueOf() 메소드와 Integer.parseInt() 메소드를 사용하면 된다... 2021. 5. 18.