🤔 Stack ✔ LIFO(Last In First Out) 마지막에 저장된 것을 먼저 꺼냄. 저장(push), 추출(pop) 🤔 Queue ✔ FIFO(First In First Out) 제일 먼저 저장한 것을 먼저 꺼냄. 따라서 LinkedList가 적합함!! 저장(offer), 추출(poll) 다음의 예제를 통해 스택과 큐에 대해 이해하자. import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Ex11_4 { static Queue q = new LinkedList(); static final int MAX_SIZE = 5; // Queue에 최대 5개까지만 저장 public static ..
다음의 포스팅을 꼭 같이 읽어볼 것을 적극 권장한다. (링크1) (링크2) 이름 특징 Iterator 컬렉션에 저장된 요소를 접근하는데 사용되는 인터페이스 ListIterator Iterator에 양방향 조회기능 추가(List를 구현한 경우만 사용가능) Enumeration Iterator 구버전 다음과 같이 컬렉션 클래스에 대해 iterator()를 호출하여 Iterator를 얻은다음 반복문, 주로 while문을 사용해서 컬렉션 클래스의 요소들을 읽어온다. import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class P413 { public static void main(String[] args) { ..
🤔 컬렉션 프레임워크(collections framework) : 데이터를 저장하는 클래스들을 표준화한 설계 - 컬렉션(다수의 객체를 다루기 위한 표준화된 프로그래밍 방식) - 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스 제공 - java.util 패키지에 포함. jdk 1.2부터 제공 🤔 컬렉션(collection) : 다수의 데이터, 데이터 그룹 - 여러 객체(데이터)를 모아 놓은 것 🤔 프레임워크(framework) 표준화된 체계적인 프로그래밍 방식 🤔 컬렉션 클래스 : 다수의 데이터를 저장할 수 있는 클래스 (예 : Vector, ArrayList, HashSet) 🤔 라이브러리와 프레임워크 ✔ 라이브러리 : 공통으로 사용될만한 유용한 기능을 모듈화하여 제공 ✔ 프레임워크 : 단순히 기능뿐..
🤔 Comparator와 Comparable이란? ✔ 객체 정렬에 필요한 메서드(정렬기준 제공)를 정의한 인터페이스 ✅ Comparable : 기본 정렬기준을 구현하는데 사용 ✅ Comparator : 기본 정렬 기준 외에 다른 기준으로 정렬할 때 사용 public interface Comparator { int compare(Object o1, Object o2); // o1, o2 두 객체 비교 boolean equals(Object obj); // equals를 오버라이딩하라는 뜻 } public interface Comparable { int compareTo(Object o); // 주어진 객체(o)를 자신과 비교 } ✔ compare()와 compareTo()는 두 객체의 비교 결과를 반환하도..
🤔 Arrays란? ✔ 배열을 다루기 편리한 메서드(static) 제공 ✅ 배열의 출력 - toString() ✅ 배열 복사 - copyOf(), copyOfRange() ✅ 배열 채우기 - fill(), setAll() ✅ 배열의 정렬과 검색 - sort(), binarySearch() (이진탐색은 정렬되어있을 때만 가능하므로 정렬 먼저 하고 binarySearch() 사용 해야 한다.) int[] arr = {3, 2, 0, 1, 4}; int idx = Arrays.binarySearch(arr, 2); // idx=-5 잘못된 결과 (왜냐? 정렬되어 있지 않아서) Arrays.sort(arr); // 배열 arr을 정렬한다. System.out.println(Arrays.toString(arr))..
🤔 Iterator, ListIterator, Enumeration 이란? ✔ 컬렉션에 저장된 데이터를 접근(읽어오기)하는 데 사용되는 인터페이스 ✔ Enumeration은 Iterator의 구버전 ✔ ListIterator는 iterator의 접근성을 향상시킨 것(단방향 -> 양방향) ✔ 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것 ✔ 컬렉션에 iterator()를 호출해서 Iterator를 구현한 객체를 얻어서 사용 🤔 Map과 Iterator ✔ Map에는 Iterator()가 없다. ✔ keySet(), entrySet(), values()를 호출해야한다. Map map = new HashMap(); ... Iterator it = map.entrySet().iterator(); 사용된 ..
필자가 최근에 주로 포스팅하는 hackerrank challenges 포스팅에서도 알 수 있지만 필자는 값을 받아올 때 보통 for문을 많이 사용한다. 그런데 hackerrank에서도 기본 소스 코드에 Iterator를 이용해 값을 받아오는 코드가 많은데 오늘 Iterator를 쓰는 확실한 이유를 알게 되었다!! 다음의 코드를 보자. import java.util.ArrayList; import java.util.Iterator; public class Iterator사용이유 { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("1"); list.add("2"); list.add("3"); list.ad..
🤔 Stack이란? ✔ LIFO 구조(Last In First Out) 마지막에 저장된 것을 제일 먼저 꺼냄. 저장(push) 추출(pop) 🤔 Queue란? ✔ FIFO 구조(First In First Out) 제일 먼저 저장한 것을 제일 먼저 꺼냄. 🤔 Stack의 메서드 🤔 pop()과 peek()의 차이 ✅ pop()은 맨 위에 값을 꺼내는 것이고 ✅ peek()은 맨 위에 값을 찾는 것이다. 🤔 search() ✅ stack에서 주어진 객체를 찾아 위치 반환하는 메서드 ✅ 못 찾으면 -1 반환 ✅ 배열과 달리 위치 1부터 시작 🤔 Queue 메서드 ✔ offer : 저장 ✔ poll : 추출 🤔 poll()과 remove()의 차이 ✅ remove() : 예외 발생(try-catch로 예외처리)..
🤔 LinkedList 배열의 장단점 ✅ 장점 ✔ 배열은 구조가 간단하고 데이터를 읽는 데 걸리는 시간(접근시간, access time)이 짧다. ✅ 단점 ✔ 크기를 변경할 수 없다. 크기를 변경해야 할 경우 새로운 배열을 생성 후 데이터를 복사해야 함. 크기 변경을 피하기 위해 충분히 큰 배열을 생성하면, 메모리가 낭비됨. ✔ 비순차적인(중간에 데이터 넣는 것) 데이터의 추가, 삭제에 시간이 많이 걸림. 데이터를 추가하거나 삭제하기 위해 다른 데이터를 옮겨야 함. 그러나 순차적인 데이터 추가(끝에 추가)와 삭제(끝에서 삭제)는 빠르다. 🤔 LinkedList - 배열의 단점을 보완 ✔ 배열과 달리 LinkedList는 불연속적으로 존재하는 데이터를 연결(link) ✔ 데이터의 삭제 : 단 한 번의 참조..
🤔 컬렉션 프레임워크(collections framework) ✔ 컬렉션(collection) - 여러 객체(데이터)를 모아 놓은 것 ✔ 프레임웍(framework) - 표준화, 정형화된 체계적인 프로그래밍 방식 ✔ 컬렉션 프레임웍(collections framework) - 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식 - 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스 제공 - java.util 패키지에 포함. JDK 1.2부터 제공 ✔ 컬렉션 클래스(collection class) - 다수의 데이터를 저장할 수 있는 클래스(예, Vertor, ArayList, HashSet) 🤔 컬렉션 프레임워크의 핵심 인터페이스 List : 순서 o, 중복 o Set : 순서 x, 중복 x Ma..
오늘은 예외 되던지기와 연결된 예외에 대해 학습하자 🤔 예외 되던지기(exception re-throwing) ✔ 예외를 처리한 후에 다시 예외를 발생시키는 것 ✔ 호출한 메서드와 호출된 메서드 양족 모두에서 예외처리하는 것 백문이 불여일견!! 코드를 통해 확인하자. public class 예외되던지기 { public static void main(String[] args) { try { method(); }catch(Exception e) { // 4. (main 메서드에서 예외 처리됨.) 출력 System.out.println("main 메서드에서 예외 처리됨."); } } static void method() throws Exception { try { throw new Exception(); //..
🤔 프로그램 오류란? ✔ 컴파일 에러(compile-time error) : 컴파일 할 때 발생하는 에러 ✔ 런타임 에러(runtime error) : 실행할 때 발생하는 에러 (프로그램 종료) ✔ 논리적 에러(logical error) : 작성 의도와 다르게 동작 (프로그램 종료 x) 🤔 예외처리의 정의와 목적 ✔ 정의 : 프로그램 실행 시 발생할 수 있는 예외의 발생에 대비한 코드를 작성하는 것 ✔ 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것 🤔 try-catch문에서의 흐름 ✅ try 블럭 내에서 예외가 발생한 경우 1. 발생한 예외와 일치하는 catch블럭이 있는지 확인 2. 일치하는 catch블럭을 찾게 되면, 그 catch블럭 내의 문장들을 수행하고 전체 try-catch문..
오늘은 자바에서 아주 중요하고 많이 쓰이는 익명클래스에 대해 알아보자. 🤔 익명클래스(anonymous class)란? ✔ 이름이 없는 일회용 클래스 ✔ 정의와 생성을 동시에! 원래 객체는 다음과 같이 선언하고 생성한다. 근데 익명 클래스는 '이름' 이 없으므로 다음과 같이 선언한다. 본인 이름이 없기 때문에 조상클래스이름 혹은 구현인터페이스의 이름을 사용한다. 예제를 살펴보자. import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; class Tes { public static void main(String[] args) { Button b = new Button("Start"); b.addAc..
지난 포스팅에서 '객체지향 프로그래밍'파트의 시리즈가 완강되어서 강의가 끝난줄 알았는데 추가 강의가 있어서 공부한 내용을 바탕으로 포스팅한다. 바로 들어가보자. 😊 🤔 내부 클래스의 제어자와 접근성이란? ✔ 내부 클래스의 제어자는 변수에 사용 가능한 제어자와 동일 class P { class InstanceInner { /* 인스턴스 내부 클래스 */ int iv = 100; // static int cv = 100; // 에러!! static 변수를 선언할 수 없다. final static int CONST = 100; // final static은 상수이므로 허용 } static class StaticInner { /* static 내부 클래스 : static 내부 클래스에서는 외부 클래스의 인스턴스..
- Total
- Today
- Yesterday
- 소스코드
- BAEKJOON
- JPA
- 개발자
- 해커랭크
- 자바의 정석
- 강의
- 챌린지
- 정보처리산업기사
- 코드
- hackerrank
- ORM
- 그리디
- LinkedList
- 22 정보처리산업기사
- 자바
- queue
- Java
- 디버깅
- challenges
- 해커랭크 자바 챌린지
- 정보처리산업기사 공부법
- 정보처리 산업기사
- hackerrank challenges
- 풀이
- 해커랭크 챌린지
- stack
- 22 정보처리 산업기사
- 백준
- 해커랭크 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |