2021-02-17 String의 Split과 달리 StringTokenizer는 문자열을 문자 자체로 구분하는데, 이를 토큰이라고 표현하기도 한다. 오늘은 이 StringTokenizer의 사용법을 알아보도록 하자. - 선언 StringTokenizer st = new StringTokenizer(name, " "); 자바 API중 하나의 클래스이기 때문에 객체로 만들어서 사용해 주어야 한다. 또한 선언 시 2가지의 매개 값을 주어야 하는데 첫 번째는 토큰화 하고 싶은 스트링 객체이고, 두 번째는 이러한 문자 토큰을 구분 지어줄 delimiter를 넣어준다. 사용할 예제는 아래와 같이 규칙적인 여러 공백을 가지는 문자열로 아래와 같다. String name = "aaa bbb ccc ddd fff"; ..
2021-02-16 Set / Map 컬렉션일 경우 상관이 없겠지만, list 함수는 중복된 값이 다수 들어가 있을 가능성이 있다. 이러한 경우 contains를 통해 foreach문을 돌면서 비교하는 방법도 있겠지만 Stream을 이용하면 좀 더 손쉽게 중복처리를 할 수 있다. 오늘은 이와 같은 방법을 알아보도록 하자. - 에제 코드 package sStream; public class People { private String name; private int age; public People(String name, int age) { this.name = name; this.age = age; }// 생성자 //// getter / setter public String getName() { retur..
2021-02-15 많은 Thread들이 동시에 수행이 된다면 자신이 원하는 결과를 얻지 못하고, 원치 않는 결과물이 나올 수 도 있다. 이럴 경우를 대비해서 자바에서는 Thread들 간의 우선순위를 정해 혼란을 방지하고 먼저 수행되야할 Thread와 그 이후에 수행되어야 할 Thread를 정할 수 있는데, 오늘은 그 방법을 알아보도록 하자. - 실행 코드 package Thread; public class main { public static void main(String[] args) { Thread thread1 = new Thread(() -> { for(int i = 0; i< 5; i++) { System.out.println("thread1 실행중입니다 . . . ."); } System.o..
2021-02-13 enum에는 단순 열거 상수형 필드 값만 주는 것이 아닌, 생성자를 통해서 새로운 열거 상수와 대응하는 데이터를 생성자를 통해서 연결시킬 수 있는데, 오늘은 그 방법을 알아보자. - 전체코드 생성자가 있다는 것은 매개변수 값을 줄 수 있다는 소리이다. 하지만 방법이 조금 특이하다. 일단 아래 전체 코드를 한번 쭉 살펴보자. package practice_00_enum; public class Main3 { // 열거타입은 클래스 내부에서도 생성할 수 있다. public enum Number{ NO_1("홍길동"), NO_2("둘리"), NO_3("고길동"); // 마지막 열거상수 소괄호 옆에는 ; 을 적어주어야 한다. private String name; // 열겨형 상수와는 다른 값..
2021-02-12 Scanner 에는 String을 입력받는 메서드 next()와 nextLine() 이 있는데, 오늘은 이 둘의 차이를 알아보도록 하자. - Scanner.next() package nextLineVsNext; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String str1 = scan.next(); // 우선 next의 경우 공백문자를 받아들일 수가 없다. // 위와 같이 입력 "a a"와 같은 결과를 주었다고 보자. System.out.println("str1 -> " + str1); } } 출력결과를..
2021-02-11 너비 우선 탐색(Breadth-first search, BFS)은 맹목적 탐색방법의 하나로 시작 정점을 방문한 후 시작 정점에 인접한 모든 정점들을 우선 방문하는 방법이다. 더 이상 방문하지 않은 정점이 없을 때까지 방문하지 않은 모든 정점들에 대해서도 너비 우선 검색을 적용한다. OPEN List는 큐를 사용해야만 레벨 순서대로 접근이 가능하다. (출처 위키피디아) 사실 말은 조금 어려울 수 있어 그림으로 다시 한번 설명하겠다. 아래의 예제를 보자. BFS로 1번 정점부터 시작해 탐색을 진행해 보겠다. 순서는 아래와 같다. 1 - > 1번 정점이 큐에 들어가게 된다. 2 - > 1번 정점과 인접해 있는 두 개의 접점 2번과 4번 정점을 큐에 담는다. 3 - > 1번 정점과 인접한 곳..