일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- database
- 코테
- Counting
- sorting
- Matrix
- Binary Search
- Math
- string
- array
- geometry
- dynamic programming
- 구현
- 파이썬
- java
- two pointers
- 코딩테스트
- bit manipulation
- hash table
- greedy
- simulation
- Stack
- Number Theory
- SQL
- Tree
- Data Structure
- Binary Tree
- implement
- 자바
- Method
- Class
- Today
- Total
목록Java (109)
코린이의 소소한 공부노트
[이터레이터, 리스트이터레이터, 이뉴머레이션 인터페이스] 1. 컬렉션에 저장된 데이터를 접근(읽어오기)하는 데 사용되는 인터페이스다. 2. Enumeration은 Iterator의 구버전이고, ListIterator는 Iterator의 접근성을 향상시킨 것이다.(단방향 -> 양방향) [Iterator 인터페이스의 메서드] boolean hasNext() // 읽어 올 요소가 남아있는지 확인한다. // 있으면 true, 없으면 false를 반환한다. Object next() // 다음 요소를 읽어온다. // hasNext()로 먼저 확인하는 것이 안전하다. void remove() // next()로 읽어 온 요소를 삭제한다. // next()를 호출한 다음 remove()를 호출해야한다.(선택적 기능) ..
[스택과 큐 비교] 1. 스택 - LIFO(Last In First Out) - 밑이 막힌 상자 - 마지막에 저장(push)된 것을 제일 먼저 꺼내게(pop) 되는 구조 - 배열로 구현하는 것이 효율적이다. 순방향/역방향 접근이 빠르기 때문이다. 2. 큐 - FIFO(First In First Out) - 밑이 뚫린 상자 - 제일 먼저 저장(offer)된 것을 먼저 꺼내게(poll) 되는 구조 - 링크드 리스트로 구현하는 것이 효율적이다. 맨 앞 삭제시 자리 이동이 필요 없기 때문이다. [스택과 큐의 메서드] 1. 스택 boolean empty() // Stack이 비어있는지 알려준다. Object peek() // Stack의 맨 위에 저장된 객체를 읽어온다. // pop()과 달리 Stack에서 객체..
[배열의 장점] 1. 구조가 간단하다. 2. 연속적이기 때문에 데이터를 읽는 데 걸리는 시간(접근시간, access time)이 짧다. [배열의 단점] 1. 크기를 변경할 수 없다. - 크기 변경을 해야 할 경우, 새로운 배열을 생성하고 데이터를 복사해야 한다.. - 크기 변경을 피하기 위해 큰 배열을 생성하면 메모리가 낭비된다. 2. 비순차적인 데이터의 추가, 삭제에 시간이 많이 걸린다. - 배열 중간에 요소를 추가, 삭제하려면 다른 데이터를 옮겨야 한다. - 순차적인 데이터 추가(맨 끝에), 삭제(맨 끝부터)는 매우 빠르다. [LinkedList, 링크드 리스트] 1. 배열의 단점(크기 변경 불가, 긴 데이터 추가/삭제 시간)을 보완한 자료구조이다. 2. 불연속적으로 존재하는 데이터를 연결한 리스트이..
[특징] - 기존의 Vector를 개선한 것으로 구현원리와 기능적으로 동일 - ArrayList와 달리 Vector는 자체적으로 동기화 처리가 되어 있다. - List 인터페이스를 구현하므로, 저장 순서가 유지되고 중복을 허용한다. - 데이터의 저장공간으로 배열을 사용한다. [생성자] ArrayList() ArrayList(Collection c) // Collection이 담긴 ArrayList 생성 ArrayList(int initialCapacity) // 배열의 길이 설정 [메서드] boolean add(Object o) // 객체를 추가한다. 성공하면 true, 실패하면 false를 반환한다. // 원래 add의 매개변수는 참조형인데, 기본형을 넣으면 컴파일러가 오토박싱을 해준다. void ad..
[용어 정리] 1. 컬렉션 - 여러 객체(데이터)를 모아 놓은 것 2. 프레임워크 - 표준화, 정형화된 체계적인 프로그래밍 방식 - 라이브러리, 자바API 등이 제공하는 기능 + 정해진 프로그래밍 방식 - 정해져 있기 때문에 유연성은 떨어지나, 정해진 대로만 하면 되기 때문에 생산성이 올라간다. - 표준화가 되어있기 때문에 누가 봐도 이해할 수 있다. 3. 컬렉션 프레임워크 - 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식 - 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스 제공 - 객체를 다룬다는 것은 데이터를 저장, 검색, 삭제, 정렬 등을 할 수 있다는 것이다. - java.util 패키지에 있다. 4. 컬렉션 클래스 - 다수의 데이터를 저장할 수 있는 클래스 - 예) Vector..
[형식화 클래스] - 숫자와 날짜를 원하는 형식으로 쉽게 출력 가능하게 해주는 클래스 - java.text패키지의 DecimalFormat, SimpleDateFormat 클래스가 이에 해당된다. [DecimalFormat 클래스] 1. 숫자를 형식화할 때 사용하는 클래스(숫자 -> 형식 문자열) double num = 1234567.89; DecimalFormat df = new DecimalFormat("#.#E0"); String s = df.format(num); // s = "1.2E6" // 1234567.89 -> 1.2*10^6 2. 패턴에 쓰이는 기호 1) 0: 10진수(값이 없을 때, 즉 빈자리는 0으로 채움) 1234567.89 패턴 -> 결과 0 -> 1234568 0.0 -> 12..
[날짜와 시간을 다루기 위한 도구] 1. java.util.Date 클래스 - 날짜와 시간을 다룰 목적으로 만들어진 클래스 - Date의 메서드는 대부분 deprecated(사용X)되었지만 여전히 쓰이는 것도 있다. 2. java.util.Calendar 클래스 - Date 클래스를 개선한 새로운 클래스 - 여전히 단점이 존재한다. 3. java.time 패키지 - Date와 Calendar 클래스의 단점(날짜와 시간을 같이 다뤄야 함 등)을 개선한 새로운 클래스 제공 - 날짜만 다룰 때는 LocalDate, 시간만 다룰 때는 LocalTime, 두 가지 모두 다룰 때는 LocalDateTime을 쓰면 된다. [Calendar 클래스] - 날짜와 시간을 다루는 추상 클래스 - getInstance() 메..
[문자열을 여러 가지로 변환하기] 1. 문자열을 기본형으로 변환 int i1 = Integer.parseInt("100"); int i2 = Integer.valueOf("100"); // 래퍼 클래스 변환에도 쓰임 2. 문자열을 래퍼 클래스로 변환 Integer i3 = new Integer("100").intValue(); Integer i4 = Integer.valueOf("100"); // 기본형 변환에도 쓰임 3. 래퍼 클래스를 문자열로 변환 String s = i4.toString(); 4. n진법의 문자열을 숫자로 변환 int i5 = Integer.parseInt("100", 2); // 100(2) = 4 int i6 = Integer.parseInt("100", 8); // 100(8)..
[래퍼 클래스] - 기본형을 감싸는 클래스 - 기본형을 객체로 다뤄야 할 때 사용하는 클래스 public final class Integer extends Number implements Comparable{ // 클래스 안에 // ... private int value; // 기본형이 들어 있다. // ... } 1. Boolean 클래스 - 기본형: boolean - 생성자: Boolean(boolean value), Boolean(String s) Boolean b1 = new Boolean(true); Boolean b2 = new Boolean("true"); 2. Character 클래스 - 기본형: char - 생성자: Character(char value) Character c = new ..
StringBuilder 클래스는 StringBuffer 클래스와 메서드 이름도 같고, 사용 방법도 같다. StringBuffer sb = new StringBuffer(); sb.append("abc"); // 클래스 이름만 바꿔주면 OK StringBuilder sb = new StringBuilder(); sb.append("abc"); 2022.08.18 - [Java] - StringBuffer 클래스 [두 클래스의 차이점] 1. StringBuffer는 동기화되어있다. - 이 클래스는 멀티 스레드에 안전하다.(thread-safe) 2. StringBuilder는 동기화되어있지 않다. - 이 클래스는 멀티 스레드에 안전하지 않다. [스레드에 대한 간단한 설명] 1. 싱글 스레드 - 한 번에 1..