본문 바로가기

분류 전체보기190

[JAVA] 컬렉션 프레임워크(Collection Framework) - Stack, Queue * Stack 클래스(자료 구조) 후입선출(LIFO : Last In First Out) 구조 => 제일 나중에 들어온 데이터가 호출 시 제일 먼저 빠져나감 선언은 아래와 같이 할 수 있다. Stack stack = new Stack(); // Element에는 Integer과 String이 올 수 있다. Stack stack = new Stack(); //int형 스택 선언 Stack stack = new Stack(); //char형 스택 선언 push(데이터) stack에 저장시키는 메소드 데이터가 위로 쌓이듯이 저장된다. peek() stack에 저장된 데이터를 가져오는 메소드 => stack의 맨 위(마지막)에 입력된 데이터를 가져오는 메소드 가져온 후, 데이터를 stack에서 제거하지 않음 즉.. 2021. 9. 17.
[Java] 컬렉션 프레임워크_LinkedList LinkedList 연결 리스트(LinkedList)는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식의 자료구조 데이터를 담고 있는 노드들이 연결되어 있고, 노드의 포인터가 이전 노드와 다음 노드와의 연결을 담당한다. Node는 LinkedList에 객체를 추가하거나 삭제하면 앞뒤 링크만 변경되고 나머지 링크는 변경되지 않는다. 중간에 데이터를 추가나 삭제하더라도 전체의 인덱스가 한 칸씩 뒤로 밀리거나 당겨지는 일이 없기에 ArrayList에 비해서 데이터의 추가나 삭제가 용이하나, 인덱스가 없기에 특정 요소에 접근하기 위해서는 순차 탐색이 필요로 하여 탐색 속도가 떨어진다는 단점이 있습니다. 그러므로 탐색 또는 정렬을 자주 하는 경우엔 배열을 사용하고 데이터의 추가/삭제가 많은 경우 .. 2021. 9. 17.
[JAVA] 컬렉션 프레임워크 개념과 ArrayList 컬렉션 프레임워크 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미 배열을 사용하다 보면 여러가지 비효율적인 문제가 생긴다. 가장 큰 문제점은 크기가 고정적이라는 것이다. 배열의 크기는 생성할 때 결정되며, 그 크기를 넘어가게 되면 더이상 데이터를 저장할 수 없다. 또 데이터를 삭제하면 해당 인덱스의 데이터는 비어있어 메모리가 낭비되는 등 여러 문제점들이 발생한다. 그렇기에 자바는 배열의 이러한 문제점을 해결하기 위해, 널리 알려져 있는 자료구조를 바탕으로 객체나 데이터들을 효율적으로 관리(추가, 삭제, 검색, 저장)할 수 있는 자료구조들을 만들어 놓았다. 이러한 자료구조들이 있는 라이브러리를 컬렉션 프레임워크라고 한다. (대표적으로는 List, Set, Ma.. 2021. 9. 17.
[Java] 제네릭(Generic) (지네릭스) 제너릭(generic) https://www.youtube.com/watch?v=DBnqmTSHEOA - 특정한 클래스에 원하는 객체 타입을 지정하여 지정된 객체만 접근하게 하는 자바 문법. - 다양한 타입의 객체들을 다루는 메서드나 컬렉션에서 컴파일할 때 컴파일러가 타입을 확인해 주는 기능 ==> 다루어질 객체의 타입을 미리 명시함으로써 번거로운 형변환을 줄여 준다는 장점이 있음. 또한, 객체의 타입을 컴파일 시에 체크하여 주기 때문에 객체의 타입 안정성을 높여주는 장점이 있음 - 타입의 안정성을 높여준다는 것은 의도하지 않은 타입의 객체가 저장되는 것을 막고, 저장된 객체를 꺼내올 때 원래의 타입과 다른 타입으로 잘못 형변환되어 발생할 수 있는 오류를 줄여 준다는 것임 제네릭스의 장점 1. 타입 안정.. 2021. 9. 17.
[JAVA] 싱글톤(singleton) 방식으로 객체 생성하기 * 싱글톤(singleton) 패턴 싱글톤 패턴을 통해서 하나의 인스턴스만 생성하도록 구현할 수 있다. https://www.youtube.com/watch?v=5jgpu9-ywtY - 생성자를 private 접근 지정자를 사용하여 외부에서 직접 접근을 못하게 불허하는 방식. - 외부에서 해당 클래스의 인스턴스를 new로 생성하지 못하도록 하는 방식. - 사용하는 이유 : 매번 객체를 생성하게 되면 메모리 성능이 느려지는 단점이 발생하기 때문. ex1) 데이터베이스를 사용하는 경우, connection 객체는 계속 같은 DB에 연결될 것이기 때문에 connection 객체를 계속해서 생성해내면 메모리 성능 저하가 발생한다. ex2) 공동으로 사용되는 파일 같은 경우, 모든 프로젝트원이 파일을 가져올 때마.. 2021. 9. 17.
[Java] 래퍼 클래스(wrapper class) 래퍼 클래스(wrapper class) - wrap : 감싸다, 포장하다 - 기본 자료형을 클래스 타입으로 포장해 놓은 클래스 - 기본 자료형보다 객체로 저장하기 때문에 좀 더 다양한 기능을 제공하기 위해 사용함 - 기본 타입의 값을 내부에 두고 포장을 하기 때문에 포장(wrapper) 클래스라고도 함 - 기본 자료형 : byte, short, long, float, double, boolean, char, int (8가지) - wrapper 클래스 : Byte, Short, Long, Float, Double, Boolean, Character, Integer (전부 앞이 대문자!) 래퍼 클래스(wrapper class) 사용 이유 1. 매개변수로 객체가 요구될 때 2. 기본형 값이 아닌 객체로 저장해.. 2021. 9. 17.