본문 바로가기

반응형

프로그래밍언어

(94)
[JAVA] Stack, Queue 1. Stack 과 Queue Stack 은 LIFO (last in first out) 의 구조로 데이터를 저장하고 추출하는 자료구조이고, Queue 는 FIFO (first in first out) 의 구조로 데이터를 저장하고 추출하는 자료구조이다. 일반적으로 stack 은 데이터의 저장과 추출에 push 와 pop, queue 는 offer 와 poll 이라는 용어를 사용한다. 스택은 자료구조의 가장 마지막에서 순차적으로 데이터가 저장되거나 출력되기 때문에 ArrayList 와 같은 배열 기반의 컬렉션 클래스로 구현하면 적합하다. 하지만 큐의 경우 데이터의 제거가 가장 첫번째 데이터부터 수행되기 때문에 ArrayList 보다는 데이터의 추가, 삭제에 용이한 Linkedlist 로 구현하는 것이 더 ..
[JAVA] List - ArrayList, LinkedList 1. ArrayList ArrayList 는 기존의 Vector 를 개선한 것으로 Vector 의 구현원리와 기능적인 측면이 동일하다. ArrayList 는 List 인터페이스를 구현한 클래스이기 때문에 저장된 값의 순서를 유지하고 중복을 허용한다. ArrayList 는 Object 배열을 이용하여 데이터를 순차적으로 저장한다. 입력되는 객체들은 배열에 순서대로 저장되며, 배열의 길이를 넘어가면 더 큰 배열을 새로 생성하여 기존의 값들을 복사한 다음에 값을 저장한다. 값을 삭제하면 삭제된 값의 공간이 빈다. 그러면 나머지 값들이 자리이동을 진행하여 빈 공간을 채운다. ArrayList 나 Vector 와 같이 배열을 이용하여 데이터를 저장하는 자료구조는 인덱스를 사용해 값을 읽어오고 저장하는 작업에는 효..
[JAVA] Collections Framework 1. 컬렉션 인터페이스 컬렉션 프레임워크에는 List, Set, Map 3개의 컬렉션 타입을 가지고 있다. 자바는 각각의 타입에 대한 인터페이스를 가지고 있으며, List 와 Set 타입의 공통점을 모아 상위의 Collection 인터페이스를 추가로 정의하였다. 인터페이스 특징 List 순서가 있는 데이터의 집합. 데이터의 중복을 허용한다. - ArrayList, LinkedList, Stack, Vector 등 Set 순서를 유지하지 않는 데이터의 집합. 데이터의 중복을 허용하지 않는다. - HashSet, TreeSet 등 Map key, value 의 형식으로 데이터 쌍을 저장하는 데이터 집합. 순서는 유지하지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용한다. - HashMap, Tree..
[JAVA] Format 클래스 자바에는 숫자나 날짜 등을 어떤 형식으로 출력할지를 지정할 수 있도록 다양한 형식화 클래스들을 가지고 있다. 이런 형식화 클래스들을 사용하면 문자, 숫자, 날짜 등의 데이터를 원하는 형식으로 출력할 수 있다. 1. DecimalFormat DecimalFormat 은 숫자를 형식화 하는 클래스이다. DecimalFormat 을 이용하면 숫자 데이터를 정수, 부동소수점, 금액 등 다양한 형식으로 표현할 수 있으며, 반대로 일정한 형식의 텍스트를 숫자로 변환할 수 있다. 형식화 클래스에서는 해당 형식을 패턴을 사용하여 표현하는데, 패턴에 사용되는 기호와 설명은 다음과 같다. 기호 설명 패턴 예시 (값 1234567.89) 0 10진수 (기본값 0) 0 0.0 0000000000.0000 1234568 123..
[JAVA] Calendar & Date 1. Calendar & Date Calendar 와 Date 는 java 초창기부터 제공되어진 클래스들이다. 초창기에 만들어진만큼 단점도 많지만 그만큼 많이 사용된다. 이러한 단점들을 보완하여 나온 것이 JDK1.8 의 java.time 패키지이다. 이번 장에서는 Calendar 와 Date 클래스의 사용 예제에 대해서 알아본다. - Calendar & GregorianCalendar Calendar 는 추상 클래스이기 때문에 직접 객체를 생성하여 사용할 수 없다. Calendar 클래스를 상속받은 GregorianCalendar 와 BuddhistCalendar 를 사용하여 객체를 생성하여 사용한다. 대부분의 국가에서는 그레고리력을 사용하기 때문에 GregorianCalendar 를 사용하면 되지만 ..
[JAVA] try-with-resources statement try-with-resources statement try-with-resources 구문은 하나 또는 복수 개의 자원을 선언하는 try 문이다. 각 자원들은 사용이 끝나면 close 되어야 하는데, try-with-resources 구문은 try 문을 탈출할 때 선언된 자원들을 모두 닫아준다. 기존의 try 문에서는 catch 블럭이나 finally 블럭 등에서 자원을 닫아주었어야 하는데, 이를 자동으로 처리해주기 때문에 편리하다. 자원으로 사용할 수 있는 객체들은 java.lang.AutoCloseable 인터페이스의 구현체에 한정된다. 기존의 try-catch 문과 동일하게 catch 블럭이나 finally 블럭을 사용할 수 있다. // 기존의 try-catch 문 // finally 블럭에서 자원..
[JAVA] Serialization & Deserialization 1. Serialization & Deserialization 자바 직렬화, Serialization 이란 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터 변환하는 기술이다. 이와 반대되는 기술로 바이트로 변환된 데이터를 다시 객체로 변환하는 기술을 역직렬화, Deserialization 이 있다. 시스템적으로 이야기하자면 JVM(Java Virtual Machine 이하 JVM)의 메모리에 상주(힙 또는 스택)되어 있는 객체 데이터를 바이트 형태로 변환하는 기술과 직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM으로 상주시키는 형태를 같이 이야기한다. - Serialization 자바에서 직렬화는 객체를 직렬화하여 전송 ..
[JAVA] java.util 패키지 1. java.util.Objects Object 클래스의 보조 클래스로 Math 클래스처럼 모든 메서드가 static이다. 객체의 비교나 null check 에 유용하다. // 객체가 null 인지 아닌지 확인하여 결과를 반환 static boolean isNull(Object obj) static boolean nonNull(Object obj) // 해당 객체가 null 인지 아닌지 판단하여 null 인 경우에 NullPointerException 을 발생시킨다. static T requireNonNull(T obj) static T requireNonNull(T obj, String message) static T requireNonNull(T obj, Supplier messageSupplier..

반응형