본문 바로가기

Language/Java

[JAVA] Iterator 1. 뜻 배열, 컬렉션 프레임 워크등을 순회할 때, 지금 위치가 어딘지 알려주는 '책갈피 같은 존재' Iterator를 원하는 위치로 이동 시켜서 원하는 작업(조회, 추가, 삭제)을 시킨다. (1)Iterator의 초기 위치 (2) 반복자 적을 때 Tip 반복자 선언문의 오른쪽 편만 다 적어놓고, iterator(); 에 ctrl + alt + V 누르면 왼쪽이 자동 완성됨. Mudo.entrySet().iterator(); //ctrl + alt + v Iterator itEn3 = Mudo.entrySet().iterator(); 2. 코드리뷰 package Chap_09; import java.util.*; public class _08_Iterator { public static void main.. 더보기
[JAVA] HashMap 1. HashMap 특징 (1) HashSet과 똑같이 순서 보장 x, 중복 허용 x 이다. (Key값을 기준으로 중복 여부 check 하고, 중복된 Key값이 들어올 시, 가장 최근에 업데이트 된 Value값을 저장한다. ) (2) HashMap은 (Key, Value) 한 쌍으로 이루어져있다. Key가 사물함 열쇠, Value가 사물함에 들어있는 값이라 생각하면 되겠다. Key 하나당 Value는 무조건 한 개이다. (3) Key와 Value는 자료형이 서로 다를 수 있다. (자료형은 Wrapper 클래스만 가능) 2. 코드 리뷰 import java.util.HashMap; public class _07_HashMap { public static void main(String[] args) { //.. 더보기
[JAVA]HashSet 1. HashSet이란? Collection FrameWork의 종류 중 하나 (컬렉션 프레임 워크에는 List,Set,Map 이 있다.) *컬렉션 프레임 워크란? 많은 양의 데이터를 더 쉽고,편리하게, 더 효율적으로 관리할 수 있도록 자바에서 제공하는 클래스의 모임. HashSet 내부 매소드 들은 List의 매소드와 거의 같다. (추가 == .add, 삭제 == .remove 등등) (1)HashSet의 특징 Hashset은 중복을 허용하지 않는다. 만약 중복해서 적어도 자동으로 중복이 제거 된다. Hashset은 순서를 보장하지 않는다. 값을 넣은 순서와 상관없이 저장된다. *만약 값을 넣은 순서대로 저장되기 원한다면? LinkedHashSet을 이용하면 된다. 2. 코드 리뷰 package Cha.. 더보기
[JAVA] Linked List 1. Linked List란? 포인터가 다음 노드 가리키게 해서 이어져 있는 자료구조. 중간 중간 삽입이 쉬움. (사람들이 서로 손 잡고 일렬로 서있는다고 생각해보자. 중간에 사람을 넣을 시 두 사람이 깎지를 떼고 그 사이에 넣으면 된다.) List 형태(ArrayList, LinkedList)는 모두 중간 삽입이 된다. 또한 List 형태는 모두 중복된 값 삽입을 허용한다. 2. 코드 리뷰 import java.util.Collections; import java.util.LinkedList; public class _05_LinkedList { public static void main(String[] args) { //링크드 리스트 LinkedList list = new LinkedList(); /.. 더보기
[JAVA] ArrayList 1. 배열 vs 컬렉션 프레임워크 (1) 배열 배열은 크기가 정해져 있음. 따라서 배열이 꽉 찼는데, 값을 더 추가해야 하는 경우, 넉넉한 크기로 배열을 새로 만들어야함. 거기다가 기존의 값들 저장 + 새로운 값들 저장 시켜야함. 배열은 특정 인덱스의 원소 값을 삭제하면, 거기가 그냥 비어있는 체로 있음. (크기가 동적으로 변화하지 않기 때문) (2) 컬렉션 프레임워크 정적인 배열에 값을 저장하는 것은 데이터들을 관리하는데 번거로운 점이 있음. 컬렉션 프레임워크는 많은 양의 데이터들을 더 쉽고, 편리하게, 효율적으로 관리할 수 있도록 JAVA에서 제공하는 클래스의 모임이다. 컬렉션 프레임은 자바와 달리 크기가 동적으로 변해서, 원하는 만큼 데이터 추가, 삭제가 가능하다. 원하는 값 탐색, 특정 값 변경,.. 더보기
[JAVA] Wrapper Class 1. 정의 int, double, float, char 같은 순수 값만 가지는 기본 자료형들을 객체 형태로 재조립한 것이다. 기본 자료형 같은 역할을 하는 Wrapper Class int Integer double Double float Float char Character (1) Wrapper Class들의 용도 기본 자료형과 똑같이 해당 타입의 값을 넣기 위해서 사용. but 아무래도 클래스 이다보니, 내장 매소드등을 이용해 더 편리한 기능을 쓸 수 있는 장점이 있다. (2) Wrapper Class들이 필요한 이유 앞에서 배웠던 Generics 클래스나 매소드를 기본 자료형은 쓸 수가 없었다. 따라서 Wrapper 클래스를 사용해서 값을 저장한 경우 Generics을 사용할 수 있기에, 해당 경우에.. 더보기
[JAVA]Generics 심화 1. 제네릭 클래스가 받을 수 있는 인수 자료형에 제한 거는 것 (1) 사전 준비 - 우리가 받고 싶은 특정 자료형을 클래스로 만든다. //1. 부모 클래스 public class User { public String name; public User(String name) { this.name = name; } public void addPoint(){ System.out.println(this.name + " 님, 포인트 적립되었습니다. "); } } //2. 자식 클래스 public class VIPUser extends User { public VIPUser(String name) { //부모의 생성자를 쓰겠다는 말 : super(); , 부모의 매소드를 쓰겠다는 말 super.매소드_이름; // .. 더보기
[JAVA] Generic Class 1. 제네릭이란? 클래스나 매소드의 데이터 타입을 나중에 확정하는 기법이다. *제네릭의 원리? 코드를 작성하여 실행하기 까지 크게 3가지의 단계로 나뉜다. 크게 개발자의 소스코드 작성 시점, 컴파일 타임, 런 타임이 있는데, 보통 변수, 매소드, 클래스의 데이터 타입은 소스코드 작성 시 바로 바로 체크한다. 하지만 제네릭을 사용하면 데이터 타입 체크 시간을 컴파일 타임으로 미룰 수 있다. 2. 제네릭이 필요한 시점. 같은 기능의 매소드나 클래스 이더라도, 인수로 받고 반환하는 값의 자료형이 다르면, 전부 따로 따로 정의 해줘야 한다. 매소드의 경우 저번 포스팅의 예시와 같이, Int 배열 전체 순회하며 원소를 프린트 하는 매소드를 String 배열에 관해 쓸 수 없다. 따라서 전부 다 따로 정의 해줘야 .. 더보기