Language 19

[Java / 자료구조] 트리 (Tree) 정리

트리(Tree)란? Tree는 이름 그대로 나무를 거꾸로 뒤집어 놓은 형태를 가지고 있다. 그래프의 여러 구조 중 단방향 그래프의 한 구조로, 하나의 뿌리로부터 가지가 사방으로 뻗은 형태이다. 데이터가 바로 아래에 있는 하나 이상의 데이터에 무방향으로 연결된 계층적 자료구조이다. 데이터를 순차적으로 나열시킨 선형 구조가 아니라, 하나의 데이터 아래에 여러 개의 데이터가 존재할 수 있는 비선형 구조이다. 아래로만 뻗어나가기 때문에 사이클이 없다. 트리 구조는 루트(root)라는 하나의 꼭짓점 데이터를 시작으로 여러 개의 데이터를 간선(edge)으로 연결한다. 각 데이터를 노드(Node)라고 하며, 두 개의 노드가 상하 계층으로 연결되면 부모/자식 관계를 가진다. A는 B와 C의 부모 노드(Parent No..

Language/Java 2022.09.26

[Java] StringTokenizer 클래스 정리

StringTokenizer StringTokenizer 클래스는 문자열을 우리가 지정한 구분자로 문자열을 쪼개 주는 클래스이다. 그렇게 쪼개어진 문자열을 토큰(token)이라고 부른다. 이 클래스를 사용하기 위해서는 java.util.StringTokenizer를 import 해야 한다. import java.util.StringTokenizer; public class Main { public static void main(String[] args) { String str = "This is a string example using StringTokenizer"; StringTokenizer tokenizer = new StringTokenizer(str); System.out.println(str)..

Language/Java 2022.09.26

[Java] String 문자열 정리

String 문자열 이란? 기본적으로 String 타입은 큰따옴표(" ")로 감싸진 문자열을 의미한다. 자바는 String 클래스 타입을 사용하여 문자열을 다룬다. 다시 말해 문자열은 String 클래스를 통해 다루어지고 그 안에 있는 메서드들을 통해 여러 문자열 관련 메서드들을 사용할 수 있다. String 타입의 변수 선언과 할당 // 문자열 리터럴을 String 타입의 변수 name에 할당하는 방법 String name1 = "Kim Coding"; // String 클래스의 인스턴스를 생성하는 방법 String name2 = new String("Kim Coding"); String 타입의 변수는 String 변수명; 으로 선언한다. 선언한 변수에 문자열을 할당하는 방법에는 두 가지가 있다. 문자..

Language/Java 2022.09.26

[Java / 자료구조] 큐 (Queue) 정리

큐(Queue)란? 사전적 의미로는 무엇을 기다리는 사람, 혹은 줄을 서서 기다리는 것을 의미하는데 이처럼 줄을 지어 순서대로 처리되는 것이 큐라는 자료구조이다. 이 자료구조에서는 앞(front)과 뒤(back)가 존재한다. 가장 먼저 진입한 데이터가 가장 먼저 나가고 마지막에 진입한 데이터는 먼저 들어온 데이터가 모두 빠져나가기 전까지는 빠져나갈 수 없다. 큐 사용 사례 프린터 인쇄 ※ 프린터 인쇄 과정 문서를 작성하고 출력 버튼을 누르면 해당 문서는 인쇄 작업(임시 기억 장치의) Queue에 들어간다. 프린터는 인쇄 작업 Queue에 들어온 문서를 순서대로 인쇄한다. 예시처럼 컴퓨터 장치들 사이에서 데이터를 주고받을 때, 각 장치 사이에 존재하는 속도의 차이나 시간 차이를 극복하기 위해 임시 기억 장..

Language/Java 2022.09.25

[Java / 자료구조] 스택 (Stack) 정리

스택(Stack)이란? Stack은 쌓다, 쌓이다, 포개지다 와 같은 뜻을 가지고 있다. 마치 접시를 쌓아 놓은 형태와 비슷한 이 자료구조는 직역 그대로, 데이터(data)를 순서대로 쌓는 자료구조이다. 다시 말해 가장 먼저 들어간 데이터는 가장 나중에 나올 수 있고 마지막에 들어간 데이터가 가장 먼저 나올 수 있는 구조이다. 스택의 사용 사례 음료수 진열대 (먼저 들어간 것이 나중에 나옴) 인터넷 브라우저 창 (뒤로 가기, 앞으로 가기 기능) 스택의 특징 입력과 출력이 하나의 방향으로 이루어지는 제한적인 접근에 있다. LIFO(Last In First Out) 혹은 FILO(First In Last Out)이라고 부른다. 데이터는 하나씩 넣고 뺄 수 있다. 스택 클래스 메서드 empty() 해당 스택이..

Language/Java 2022.09.25

[Java] next()와 nextLine()의 차이

Scanner클래스에는 String을 입력받는 메서드 next()와 nextLine()이 있다. 공통점은 둘 다 문자열로 반환시켜준다는 것이다. next() 메서드는 공백(space)전까지 입력받은 문자열을 반환한다는 것이다. nextLine() 메서드는 Enter를 치기 전까지 쓴 문자열 모두를 반환한다는 것이다. Scanner.next() Scanner in = new Scanner(System.in); String str = in.next(); // next()는 공백 문자를 받아들이지 않는다. // "a a"를 입력해봤을때를 가정해보자 System.out.println(str); // 입력 a a /* 출력 a */ 출력결과를 보면 a a 를 입력을 받았지만 처음에 a만 저장되어 출력되는 것을 확..

Language/Java 2022.09.25

[Java] Set 정리

Set이란? Set은 요소의 중복을 허용하지 않고, 저장 순서를 유지하지 않는 컬렉션이다. 대표적인 Set 클래스에는 HashSet, TreeSet이 있다. 이외에 LinkedHashSet이 있는데 다른 Set과는 다르게 입력 순서를 보장해준다. Set 인터페이스 정의된 메서드 add(Object o) 주어진 객체를 추가하고, 성공하면 true를 중복 객체면 false를 리턴한다. boolean 타입을 리턴한다. contains(Object o) 주어진 객체가 Set에 존재하는지 확인한다. boolean 타입을 리턴한다. isEmpty() Set이 비어있는지 확인한다. boolean 타입을 리턴한다. iterator() 저장된 객체를 하나씩 읽어오는 반복자를 리턴한다. Iterator 타입을 리턴한다. ..

Language/Java 2022.09.25

[Java] 리스트 (List) 정리

리스트 (List) 란? 배열과 같이 객체를 일렬로 늘어놓은 구조를 가지고 있다. 객체를 인덱스(index)로 관리하기 때문에 객체를 저장하면 자동으로 인덱스가 부여되고, 인덱스로 객체를 검색, 추가, 삭제할 수 있는 등의 기능을 제공한다. List 인터페이스를 구현한 클래스로는 ArrayList, Vector, LinkedList, Stack 등이 있다. 가장 많이 사용되는 것은 ArrayList와 LinkedList이다. 리스트의 특징 순서가 있고 중복을 허용한다. 인덱스로 관리하기 때문에 인덱스로 접근이 가능하다. 크기가 가변적이다. List 인터페이스 리스트 인터페이스에서 공통적으로 사용 가능한 메서드 add(int index, Object element) 주어진 인덱스에 객체를 추가한다. add..

Language/Java 2022.09.24

[Java] 자바 컬렉션 프레임워크(Collection Framework) 정리

컬렉션 프레임워크란? ( Collection Framework ) 자바에서는 다수의 데이터를 저장하기 위해 널리 알려져 있는 자료 구조를 바탕으로 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 컬렉션을 만들고, 관련된 인터페이스와 클래스를 포함시켜 두었다. 즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것이다. 컬렉션 프레임워크가 제공하는 다양한 인터페이스와 구현 클래스를 활용하면, 보다 객체 지향적이고 재사용성 높은 코드를 작성할 수 있다. 컬렉션 프레임워크는 특정 자료 구조에 데이터를 추가, 삭제, 수정, 검색하는 등의 동작을 수행하는데 편리한 메서드들을 제공한다. 컬렉션 프레임워크 구조 컬렉션 프레임워크는 주요 인터페이스로 List, Set, ..

Language/Java 2022.09.24
반응형