🤔 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()는 두 객체의 비교 결과를 반환하도..
🤔 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) ✔ 데이터의 삭제 : 단 한 번의 참조..
🤔 프로그램 오류란? ✔ 컴파일 에러(compile-time error) : 컴파일 할 때 발생하는 에러 ✔ 런타임 에러(runtime error) : 실행할 때 발생하는 에러 (프로그램 종료) ✔ 논리적 에러(logical error) : 작성 의도와 다르게 동작 (프로그램 종료 x) 🤔 예외처리의 정의와 목적 ✔ 정의 : 프로그램 실행 시 발생할 수 있는 예외의 발생에 대비한 코드를 작성하는 것 ✔ 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것 🤔 try-catch문에서의 흐름 ✅ try 블럭 내에서 예외가 발생한 경우 1. 발생한 예외와 일치하는 catch블럭이 있는지 확인 2. 일치하는 catch블럭을 찾게 되면, 그 catch블럭 내의 문장들을 수행하고 전체 try-catch문..
그간 필자는 객체지향이 정확히 무엇인지도 모르고 생성자, 오버로딩, 오버라이딩은 왜 배우는지도 모르고 주입식으로 학습했다. 객체지향 : 객체 단위로 프로그래밍 하는것, 코드의 중복 줄일 수 있음. 오버로딩 : 생성자 여러 개 생성하는 데 매개변수 다른 것 오버라이딩 : 상속받은 생성자 재정의 하는 것 등 이론식으로 공부했다. 그러다 다음의 예제를 만나고 모든 것이 한번에 이해가 되었다. 이전 필자의 포스팅에서 소개한 내용인데 필자의 시야가 확 트이는? 예제였기에 다시 한 번 포스팅 한다. (이전 포스팅 참고) 바로 들어가보자. 다음의 코드를 보자. (코드를 잘 짜는 것이 얼마나 코드를 단축시킬 수 있는지 알게 되는 코드이다.) 필자는 처음에 강의를 듣고 소름이 돋았다. 👍 class MyPoint3 ex..
🤔 생성자 this()란? 생성자에서 다른 생성자를 호출할 때 사용한다. 다른 생성자 호출 시 첫 줄에서만 사용가능! 다음의 예시를 살펴보자. Car(String color) { door = 5; Car(color, "auto", 4); // 에러, 다른 생성자 호출 시 반드시 첫 줄에서만 사용가능!! // 또한 같은 클래스 안의 생성자를 호출할 때 Car(color, "auto", 4); 로 호출하면 안되고 // this 사용해야함. } // 올바른 사용법 Car(String color) { this(color, "auto", 4); } 🤔 참조변수 this란? 인스턴스 자신을 가리키는 참조변수 인스턴스 메서드(생성자 포함)에서 사용가능 지역변수(lv)와 인스턴스 변수(iv)를 구별할 때 사용 this..
🤔 클래스의 정의 클래스란 객체를 정의해 놓은 것이다. 🤔 클래스의 용도 클래스는 객체를 생성하는 데 사용한다. 그럼 객체란 무엇일까? 🤔 객체의 정의 실제로 존재하는 것 사물 또는 개념을 의미한다. 🤔 객체의 용도 객체가 가지고 있는 기능과 속성에 따라 다르다. 객체의 구성 요소 - 속성과 기능 객체 = 속성(변수) + 기능(메서드) 🤔 객체와 인스턴스 객체 : 모든 인스턴스를 대표하는 일반적 용어 인스턴스 : 특정 클래스로부터 생성된 객체(예 : TV 인스턴스) 클래스 -------------------> 인스턴스(객체) 인스턴스화 그럼 오늘도 열공하자 🔥
- Total
- Today
- Yesterday
- stack
- hackerrank challenges
- ORM
- 22 정보처리산업기사
- 해커랭크 챌린지
- 소스코드
- 그리디
- 해커랭크 자바 챌린지
- LinkedList
- JPA
- 정보처리 산업기사
- 자바
- 정보처리산업기사 공부법
- Java
- 정보처리산업기사
- 강의
- queue
- 코드
- BAEKJOON
- 자바의 정석
- 디버깅
- 22 정보처리 산업기사
- challenges
- 백준
- 개발자
- hackerrank
- 풀이
- 해커랭크
- 챌린지
- 해커랭크 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |