반응형

java 66

자바 컬렉션 프레임워크 List

자바의 다형성과 OCP 원칙을 가장 잘 활용할 수 있는 곳 중 하나가 바로 자료 구조이다.자료 구조에 다형성과 OCP 원칙이 어떻게 적용되는지 알아보자. List자료 구조순서가 있고, 중복을 허용하는 자료 구조를 리스트(List)라고 한다.우리가 지금까지 만든 MyArrayList와 MyLinkedList는 내부 구현만 다를 뿐 같은 기능을 제공하는 리스트이다. 물론 내부 구현이 다르기 때문에 상황에 따라 성능은 달라질 수 있다. 핵심은 사용자 입장에서 보면 같은 기능을 제공한다는 것이다.이 둘의 공통 기능을 인터페이스로 뽑아서 추상화하면 다형성을 활용한 다양한 이득을 얻을 수 있다.같은 기능을 제공하는 메서드를 MyList 인터페이스로 뽑아보자.public interface MyList { int..

공부/Java 2024.09.27

자바 컬렉션 프레임워크 - LinkedList

노드와 연결1배열 리스트의 단점 : 배열 리스트는 내부에 배열을 사용해서 데이터를 보관하고 관리한다. 이로 인해 다음과 같은 단점을 가진다1. 배열의 사용하지 않는 공간 낭비-배열은 필요한 배열의 크기를 미리 확보해야 한다. 데이터가 얼마나 추가될지 예측할 수 없는 경우 나머지 공간은 사용되지 않고 낭비된다. 2. 배열의 중간 데이터 추가- 앞이나 중간에 데이터를 추가하거나 삭제하는 경우 많은 데이터를 이동해야 하기 때문에 성능이 좋지 않다.  노드와 연결노드와 연결 구조를 사용하면 이 문제를 해결할 수 있다.낭비되는 메모리 없이 딱 필요한 만큼만 메모리를 확보해서 사용하고, 또 앞이나 중간에 데이터를 추가하거나 삭제할 때도 효율적인 자료구조이다. 노드를 만들고 각 노드를 서로 연결하는 방식이다. pub..

공부/Java 2024.09.26

자바 컬렉션 프레임워크 - ArrayList

배열의 특징 1- 배열과 인덱스배열과 같이 여러 데이터(자료)를 구조화 해서 다루는 것을 자료 구조라한다.자바는 배열 뿐만 아니라, 컬렉션 프레임워크라는 이름으로 다양한 자료 구조를 제공한다.컬렉션 프레임워크와 자료 구조를 설명하기 전에 먼저 자료 구조의 가장 기본이 되는 배열의 특징을 알아보자.public class ArrayMain1 { public static void main(String[] args) { int[] arr = new int[5]; //index 입력 : O(1) System.out.println("==index 입력: O(1)=="); arr[0] = 1; arr[1] = 2; arr[2] = 3; ..

공부/Java 2024.09.25

자바 제네릭(Generic) 2편

저번에 이어서 자바 제네릭을 계속 알아보자. 제네릭이 아직 뭔지 모르겠다면, 이전 포스팅을 참고하도록 하자.https://surrealcode.tistory.com/74 자바 제네릭(Generic) 1편제네릭을 배우기에 앞서 다음과 같은 코드를 살펴보자혹시라도 래퍼 클래스에 대해 잘 모른다면 이전 글을 참고하는게 좋다.https://surrealcode.tistory.com/59 자바 래퍼 클래스(wrapper class)기본형의surrealcode.tistory.com  타입 매개변수 제한이번에는 동물 병원을 만들어 본다고 가정한다. 요구사항은 다음과 같다요구사항: 개 병원은 개만 받을 수 있고, 고양이 병원은 고양이만 받을 수 있어야 한다.import generic.animal.Dog;public c..

공부/Java 2024.09.24

자바 제네릭(Generic) 1편

제네릭을 배우기에 앞서 다음과 같은 코드를 살펴보자혹시라도 래퍼 클래스에 대해 잘 모른다면 이전 글을 참고하는게 좋다.https://surrealcode.tistory.com/59 자바 래퍼 클래스(wrapper class)기본형의 한계 1자바는 객체 지향 언어이다. 그런데 바자 안에 객체가 아닌 것이 있다. 바로 int, double 같은 기본형(Primitive Type)이다. 기본형은 객체가 아니기 때문에 다음과 같은 한계가 있다.1.surrealcode.tistory.compublic class IntegerBox { private Integer value; public void set(Integer value){ this.value = value; } publi..

공부/Java 2024.09.23

자바 예외처리 복습하기

예외처리가 필요한 이유를 알아보기 위해 다음과 같은 간단한 예제 프로그램을 만들었다. 이 코드는 사용자의 입력을 받고, 입력 받은 문자를 외부 서버에 전송하는 프로그램이다.(실제 통신을 하고있다고 가정한다) NetworkClient : 외부 서버와 연결하고, 데이터를 전송하고, 연결을 종료하는 기능을 제공한다.NetworkService : NetworkClient를 사용해서 데이터를 전송한다. NetworkClient를 사용하려면, 연결, 전송, 연결 종료와 같은 복잡한 흐름을 제어해야 하는데, 이런 부분을 NetworkService가 담당한다.Main : 사용자의 입력을 받는다. --> 전체 흐름 : Main을 통해 사용자의 입력을 받으면, 사용자의 입력을 NetworkService에 전달한다. Net..

공부/Java 2024.09.22

자바 지역클래스 복습하기

지역클래스(Local class)는 내부 클래스의 특별한 종류의 하나이다. 따라서 내부 클래스의 특징을 그대로 가진다. 지역클래스도 내부 클래스이므로 바깥 클래스의 인스턴스 멤버에 접근할 수 있다. 지역 클래스 특징1. 지역 클래스는 지역 변수처럼 코드 블럭(메서드) 안에 클래스를 선언한다.2. 지역 클래스는 지역 변수에 접근할 수 있다. 다음과 같은 코드를 보자public class LocalOuterV1 { private int outInstanceVar = 3; public void process(int paramVar){ int localVar = 1; class LocalPrinter{ int value = 0; publ..

공부/Java 2024.09.21

자바 중첩 클래스, 내부 클래스 복습하기

중첩 클래스, 내부 클래스란?다음과 같이 for 문 안에 for문을 중첩하는 것을 중첩(Nested) for문이라고 한다for(){    for(){    }} 클래스도 마찬가지로 클래스 안에 클래스를 중첩해서 정의할 수 있는데, 이것을 중첩 클래스(Nested Class)라 한다.class Outer{    class Nested{    }} 중첩 클래스는 정의하는 위치에 따라 다음과 같이 분류한다. 중첩 클래스는 총 4가지가 있고, 크게 2가지로 분류할 수 있다.정적 중첩 클래스내부클래스 : 내부 클래스, 지역 클래스, 익명 클래스 변수 선언 위치1. 정적 변수(클래스 변수) -> 정적 변수와 같은 위치2. 인스턴스 변수 -> 인스턴스 변수와 같은 위치3. 지역 변수 -> 지역 변수와 같이 코드 블럭..

공부/Java 2024.09.20

자바 String 클래스 복습하기

String 클래스-기본자바에서 문자를 다루는 대표적인 타입은 char, String 두가지가 있다.public class CharArrayMain { public static void main(String[] args) { char a = '가'; System.out.println("a = " + a); char[] charArr = {'h','e','l','l','o'}; System.out.println(charArr); String str = "hello"; System.out.println(str); }} 기본형인 char을 다루는 방법은  매우 불편하기 때문에 자바는 문자열을 편리하게 다룰 수 있는 Strin..

공부/Java 2024.09.19
반응형