loading
본문 바로가기

Language/Java17

[ Java ] 해시맵 ( HashMap ) [ Java ] 해시맵 ( HashMap ) 📚 Table of Contents 해시맵 ( HashMap ) 이란? 맵 : 키( Key ) 와 값( Value ) 두 쌍으로 데이터를 보관하는 자료구조이다. 해싱( Hashing ) : 키가 해시 함수를 거쳐 해시 코드로 매핑되는 과정 해시 함수( Hash function ) : 임의의길이 데이터를 고정 길이 데이터로 매핑하는 함수 해시맵 특징 Key, Value 두 쌍으로 데이터를 저장한다. Key는 유일해야 한다. ( 중복 X ) 데이터의 검색 속도가 빠르다. 대용량 데이터 관리에 좋다. HashTable vs HashMap HashMap과 사용법이 거의 동일한 컬렉션인 HashTable이 있다. 둘은 같은 자료구조이지만 자바에서 차이가 존재한다. Th.. 2023. 12. 14.
[ Java ] 버퍼 ( Buffer ) [ Java ] 버퍼 ( Buffer ) 📚 Table of Contents 버퍼 ( Buffer ) 란? 스트림은 내부에 버퍼( buffer ) 라는 임시 메모리 공간을 가지고 있다. 위키백과 : 버퍼( buffer )는 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역이다. 버퍼는 컴퓨터 안의 프로세스 사이에서 데이터를 이동시킬 때 사용된다. 보통 데이터는 키보드와 같은 입력 장치로부터 받거나 프린터와 같은 출력 장치로 내보낼 때 버퍼 안에 저장된다. 버퍼는 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리 영역으로 입출력 시에 많이 사용된다. 예를 들어 입력 버퍼 사용 시 입력한 데이터가 프로그램으로 바로 전달되는.. 2023. 12. 6.
[ Java ] 스트림 ( Stream ) [ Java ] 스트림 ( Stream ) 📚 Table of Contents 스트림 ( Stream ) 이란? 스트림(Stream)은 Byte 형태로 데이터를 운반하는데 사용되는 연결통로로써 단방향 통신을 하며, 큐의 FIFO 구조로 되어있다. 또한 입력과 출력을 통시에 수행하려면 입력을 위한 입력 스트림(input stream)과 출력을 위한(output stream), 모두 2개의 스트림이 필요하다. 마지막으로 Source - 입력 스트림 input Stream- 출력 스트림 output Stream- Sink 순서로 데이터가 흐른다. Java에서 스트림(Stream)은 람다를 활용할 수 있는 기술 중 하나이다, 스트림은 `데이터의 흐름` 이다. 배열 또는 컬렉션 인스턴스에 함수 여러 개를 조합해서.. 2023. 11. 23.
[ Java ] HashSet 이란? [ Java ] HashSet 이란? 📚 Table of Contents HashSet은 Set 인터페이스에서 지원하는 구현 클래스이다. 때문에 Set의 성질을 그대로 상속받는 다는 것이 특징이다. HashSet 특징 중복 허용 안함: 같은 요소를 중복해서 추가할 수 없다. 순서 보장 안함: HashSet은 요소들의 순서가 없다. 널(null) 값 허용: HashSet에는 하나의 널 값만 저장할 수 있다. HashSet 구현 및 주요 메서드 HashSet 생성 // 타입을 지정 가능 HashSet hsset = new HashSet(); // 타입을 생략하여 사용 가능 -> 빈 HashSet생성 시 사용 HashSet hsset1 = new HashSet(); // 초기 용량(Capacity) 설정 Ha.. 2023. 11. 22.
[ Java ] 13. 예외 처리 ( exception handling ) [Java] 13. 예외 처리 ( exception handling ) 📚 Table of Contents 01. 오류 종류 논리 에러 (Logic Error) 논리적 에러는 이른바 '버그'라고 생각하면 된다. 프로그램이 실행하고 작동하는 데는 아무런 문제가 없는 오류이지만, 결과가 예상과 달라 사용자가 의도한 작업을 수행하지 못하게 되어 서비스 이용에 지장이 생길 수 있다. 논리적 오류는 컴퓨터 입장에서는 프로그램이 멀쩡히 돌아가는 것이니 에러 메시지를 알려주지 않는다. 따라서 개발자는 프로그램의 전반적인 코드와 알고리즘을 체크 필요가 있다. 컴파일 에러 (Complillation Error) 컴파일 에러는 컴파일 단계에서 오류 발견하면 컴파일러가 에러 메시지 출력해 주는 것을 말한다. 컴파일 에러 발.. 2023. 11. 9.
[ Java ] 12. 자바 입출력 [Java] 12. 자바 입출력 📚 Table of Contents 01. 자바 입출력과 스트림 스트림이란? 자바에서 모든 입출력은 스트림(Stream)을 통해 이루어진다. 입출력 장치는 매우 다양하여 장치에 따라 입출력 부분을 일일이 다르게 구현하면 프로그램 호환성이 떨어질 수 밖에 없다. 이런 문제를 해결하기 위해 자바는 입출력 장치와 무관하고 일관성 있게 프로그램을 구현할 수 있도록 일종의 가상 통로인 스트림을 제공한다. 자료를 읽어 들이려는 소스(source)와 자료를 쓰려는 대상(target)에 따라 각각 다른 스트림 클래스를 제공한다. 입, 출력 스트림 어떤 대상으로부터 자료를 읽어 들일 때 사용하는 스트림이 입력 스트림이다. 편집 화면에 사용자가 쓴 글을 파일에 저장할 때는 출력 스트림을 사.. 2023. 11. 9.
[ Java ] 11. 내부 클래스 ( inner class ) [ Java ] 11. 내부 클래스 ( inner class ) 📚 Table of Contents 01. 내부 클래스란 내부 클래스(inner class)란 하나의 클래스 내부에 선언된 또 다른 클래스를 의미한다. 내부에 정의된다는 점을 제외하고는 일반적인 클래스와 다르지 않다. 우리가 어느 클래스에 변수나 상수가 필요하다면 클래스 멤버로서 클래스 내에서 선언하여 사용해 왔듯이, 선언 주체를 변수에서 클래스로 바꾼다면 그것이 내부 클래스인 것이다. 이처럼 내부 클래스는 보통 두 클래스가 서로 긴밀한 관계가 있거나, 하나의 클래스 또는 메서드에서만 사용되는 클래스일 때 이용되는 기법이다. class Outer { // 외부 클래스 ... class Inner { // 내부 클래스 ... } ... } 내.. 2023. 11. 9.
[ Java ] 10. 인터페이스 ( interface ) [ Java ] 10. 인터페이스 ( interface ) 📚 Table of Contents 01. 인터페이스 인터페이스도 추상 클래스와 비슷하게 다른 클래스를 작성하는데 도움을 주는 목적으로 작성한다. 다만 인터페이스는 추상 클래스보다 추상화 정도가 높아 추상 클래스와 다르게 구현부가 있는 일반 메서드, 일반 변수 멤버 등을 가질 수 없다. 즉, 인터페이스는 구현된 게 아무것도 없는 기본 설계도라고 할 수 있다. 인터페이스 또한 인스턴스를 생성할 수 없다. // 인터페이스 선언 접근제어자 interface 인터페이스이름 { public static final 타입 상수이름 = 값; ... public abstract 메소드이름(매개변수목록); ... } // 인터페이스 구현 class 클래스이름 im.. 2023. 11. 9.
[ Java ] 09. 추상 클래스 ( abstract class ) [ Java ] 09. 추상 클래스 ( abstract class ) 📚 Table of Contents 01. 추상 클래스 (abstract class) 추상 클래스(Abstract Class)는 추상 메서드를 선언해 놓고 상속을 통해 자식 클래스에서 메서드를 완성하도록 유도하는 클래스이다. 이러한 특성 탓에 미완성 설계도라고 표현하기도 한다. 실체클래스의 공통적인 부분( 변수, 메서드 )을 추출해서 선언한 클래스이다. 실체가 없고 구체적이지 않기 때문에 추상클래스는 객체를 생성할 수 없다. 추상클래스와 실체클래스는 상속관계이다. abstract class 클래스이름 { ... abstract 반환타입 메소드이름(); ... } 추상 클래스는 추상 메서드를 가지지 않아도 괜찮다. 다만, 추상 메서드를 .. 2023. 11. 9.
[ Java ] 08. 다형성 ( Polymorphism ) [ Java ] 08. 다형성 ( Polymorphism ) 📚 Table of Contents 01. 다형성 ( Polymorphism ) 다형성이란 하나의 객체가 여러 가지 형태를 가질 수 있는 것을 의미한다. 자바에서 다형성은 한 타입의 참조 변수를 통해 여러 타입의 객체를 참조할 수 있도록 하는 것이다. 즉, 상위 클래스 타입의 참조 변수를 통해서 하위 클래스의 객체를 참조할 수 있도록 허용하여 상위 클래스가 동일한 메시지로 하위 클래스들이 서로 다른 동작을 할 수 있도록 한다. 다형성을 활용하면, 부모 클래스가 자식 클래스의 동작 방식을 알 수 없어도 오버라이딩을 통해 자식 클래스에 접근할 수 있다. 다형성의 장점 유지보수 : 여러 객체를 하나의 타입으로 관리할 수 있어 유지보수가 용이하다. 재.. 2023. 11. 9.