코딩테스트/Java 문법 정리 10

Comparator vs Comparable

오늘은 Comparator 와 Comparable 에 대해 비교하겠다. 위 두 인터페이스는 아래의 생각을 밑바탕으로 사용한다. "객체를 비교할 수 있도록 만든다." # 先 정리 Comparable Comparator 오버라이드 메소드 compareTo(T o) compare(T o1, T o2) 비교 대상 "자기 자신과 매개변수 객체를 비교"하는 것 "두 매개변수 객체를 비교"하는 것 패키지 기본(lang에 포함되어있어서 import 필요x) java.util 에 포함되어있음. 비교 리턴 return this.age - o1.age;---- (O) if~else로 return 양수,0,음수아무값 ----(O) # Comparable 예제 class Student implements Comparable {..

int, long 자료형 오버플로우 궁금증해결!

해당 글은 오버플로우 원인과 해결 방법에 대해 탐구하는 글이다. int형은 21억xxx이므로 a,b,c 값을 10억씩 넣어주었다. #case1 좌항 long일때 우항의 합이 int 오버플로우이면 값이 잘 주입될까? 정답 : 우항의 계산중 오버플로우 된값이 좌항에 주입된다. a+b+c = 30억이 나와야 하지만 우항에서 a+=b; -> a+=c; -> sum= a; 와 같이 실행되므로 오버플로우가 발생한다. #case2 우항에서 맨 처음 변수에 long타입으로 먼저 형변환을 하면 계산이 잘 될까? 정답 : 우항의 계산이 잘 되어 sum에 주입된다. (long)a+=b; (long)a+=c; 를 실행하면 오버플로우가 발생하지 않고 최종적으로 sum=(long)a 를 할당해줌으로서 무사히 값이 들어간다. #c..

Deque(덱, Double-Ended Queue)

Deque : Double-Ended Queue 큐의 양쪽으로 엘리먼트의 삽입과 삭제를 수행할 수 있는 자료구조를 의미한다. 1. 추가 - 앞쪽에 추가하기 : addFirst(), offerFirst() - 마지막쪽에 추가하기 : addLast(), add(), offerLast(), offer() 2. 뽑기 - 덱의 앞쪽에서 뽑기 : removeFirst(), pollFirst(), remove(), poll() - 덱의 마지막쪽에서 뽑기 : removeLast(), pollLast() 3. 뽑지않고 리턴 - 덱의 앞쪽 리턴 : getFirst(), peek(), peekFirst() - 덱의 마지막쪽 리턴 : getLast(), peekLast() 4. 그 외 removeFirstOccurrence(..

정규표현식 정리(Java,JS,Python 등)

www.youtube.com/watch?v=t3M6toIflyQ 영상보고 이해하는게 더 직관적이다. 정규표현식은 크게 4가지로 분류한다." Groups and ranges | 또는 () 그룹 [] 문자셋, 괄호안의 어떤 문자든 [^] 부정 문자셋, 괄호안의 어떤 문가 아닐때 (?:) 찾지만 기억하지는 않음 Quantifiers ? 없거나 있거나 (zero or one) * 없거나 있거나 많거나 (zero or more) + 하나 또는 많이 (one or more) {n} n번 반복 {min,} 최소 {min,max} 최소, 그리고 최대 Boundary-type \b 단어 경계 \B 단어 경계가 아님 ^ 문장의 시작 $ 문장의 끝 Character classes \ 특수 문자가 아닌 문자 . 어떤 글자 (..

[Java] 자바 정규 표현식 (Pattern, Matcher)

정규표현식은 특정 문자열이 아래와같은 특정 요소로만 이루어져있는지 판단하기 위해 사용한다. 정규 표현식 설명 ^[0-9]*$ 숫자 ^[a-zA-Z]*$ 영문자 ^[가-힣]*$ 한글 \\w+@\\w+\\.\\w+(\\.\\w+)? E-Mail ^\d{2,3}-\d{3,4}-\d{4}$ 전화번호 ^01(?:0|1|[6-9])-(?:\d{3}|\d{4})-\d{4}$ 휴대전화번호 \d{6} \- [1-4]\d{6} 주민등록번호 ^\d{3}-\d{2}$ 우편번호 정규 표현식을 작성하는 방법은 자바 API java.util.regex 패키지를 사용해야 합니다. 자바에서 정규표현식을 사용할때에는 java.util.regex 패키지 안에 있는 Pattern클래스와 Matcher클래스를 주로 사용합니다. Pattern..

List, Map,Set 정리

//맵 : key, value Map map = new HashMap(); //셋 HashSet hash = new HashSet(); 인터페이스 구현 클래스 특징 List LinkedList Stack Vector ArrayList 순서가 있는 데이터의 집합, 데이터의 중복을 허용함 Set HashSet TreeSet 순서를 유지하지 않는 데이터의 집합, 데이터의 중복을 허용하지 않음 Map HashMap TreeMap HashTable Properties 키(key)와 값(value)의 쌍으로 이루어진 데이터의 집합 순서는 유지되지 않고, 키는 중복을 허용하지 않으며 값의 중복을 허용함 ArrayList의 특징 동기화를 보장해주지 않는다. 배열에 동적 메모리 증가 기능을 구현한 클래스이다. 동기화 지..

[JAVA] 참조변수 (Call by Reference, Call by Value)

C언어에서는 포인터를 이용해서 매개변수의 주소값을 넘겨 "참조(Reference)"할 수 있다. JAVA에서는 포인터가 따로 없으며, 일단 기본적인 매개변수는 Call by Value라고 생각한다. 하지만, 예외적으로 배열(Array)과 클래스(Class)는 참조변수로 Call by Reference로 작동한다. 그렇다면, 전달받은 배열이나 클래스는 어떻게 Call by Value처럼 기존의 참조값을 건들지 않고 사용할까? 예시를 하나 들어보겠다. Call by Reference void dfs(boolean[] check){ check[0] = true; //dfs(....) } Call by Reference -> Call by Value 처럼 사용하는법 void dfs(boolean[] check)..

[JAVA] 큐/스택 정리

컬렉션프레임워크 관련 표 Stack s = new Stack(); Queue q = new LinkedList(); PriorityQueue pq = new PriorityQueue(); => 우선순위큐는 implements Comparable 필요. Stack 메소드 설명 .empty() Stack이 비어있으면 true 반환 .peek() Stack 맨위의 객체 반환(꺼내지 않음) .pop() Stack 맨위의 객체를 꺼내서 반환 .push(객체) Stack에 객체 저장 .search(객체) Stack에서 주어진 객체를 찾아서 그 위치 반환.(배열과 달리 위치가 1부터 시작) / 못찾으면 -1 반환 Queue 메소드 설명 .add(객체) 객체추가(성공시true /실패시 저장공간이 부족하면 예외발생) ...