본문 바로가기

자바(Java)12

자바(Java) PriorityQueue PriorityQueue 일반적인 큐의 구조 FIFO(First In First Out)를 가짐. 단, 우선순위 기준을 정하고 우선순위가 높은 데이터가 먼저 나가는 자료구조. 특징 우선순위의 요소 높은 순으로 처리하는 구조. 비교가 가능한 기준이 있어야 함. => 따라서 null 값을 허용하지 않음. 내부 요소는 힙으로 구성되어 이진트리 구조로 이루어짐. 수정이 이루어지면 내부적으로 재정렬을 계속 한다. 시간 복잡도는 O(NLogN). 객체 선언 형식 import java.util.PriorityQueue; import java.util.Collections; // 오름차순 int 형 우선순위 큐 선언 PriorityQueue qL = new PriorityQueue(); // 내림차순 int 형 우선순.. 2023. 2. 26.
자바(Java) StringTokenizer 클래스과 split 메소드 둘 다 문자열 분리에 사용되는 녀석들이다. 우선 차이점을 보자. StringTokenizer split java.util에 포함된 클래스 String 클래스에 포함된 메소드 결과값이 여러 개의 Token으로 이루어진 String 결과값이 String 배열 빈 문자열을 Token으로 인식하지 않음 빈 문자열을 Token으로 인식함 문자나 문자열을 구분자로 사용 정규표현식으로 구분 StringTokenizer 해당 클래스 자체에 대해서 알아보자. 보통은 BufferedReader 클래스와 같이 사용하는데 사실 그게 아니더라도 그냥 String을 분리하고 싶으면 사용한다. 쉽게 말해, String을 Token화 해서 여러 개로 분리한다. 라는 거다. 생성자는 아래와 같다. // 띄어쓰기 기준으로 분리 Stri.. 2023. 2. 20.
자바(Java) 자바 입력의 전체적 개요 요약 1. 자바 입력의 전체적 개요 2. UTF-8 과 UTF-16 의 구성 방식의 차이 3. Stream 4. System.in 5. InputStreamReader 6. Scanner(System.in) 7. BufferedReader 자바 입력의 전체적 개요 - 자바는 문자열을 메모리 상에서 UTF-16으로 인코딩하여 처리. - 문자열 송/수신을 위해 직렬화가 필요할 때에는 변형된 UTF-8 을 사용. - 문자열을 입출력 할 때는 운영체제 기본 인코딩값, 또는 사용자가 지정한 인코딩 값(file encoding)으로 문자열을 인코딩. (메모리 상에서 처리되는 것과는 다름.) - 1 ~ 127 까지는 아스키 코드 값과 유니코드(UTF-8, UTF-16 등 ), MS계열 코드(CP949, MS949 등.. 2023. 2. 9.
자바(Java) StringBuilder와 String String 그들끼리의 연산 시, 메모리 할당과 해제를 반복한다. => 즉, 연산량이 증가하면 좋지 않다. StringBuilder 연산 시 객체를 더할 때, 메모리를 할당하지 않고 기존 객체에 더하는 방식을 사용. => 메모리 사용이 적고 빠르다. => append() 함수를 이용해 더한다. => String으로 변환 시, toString()을 이용한다. public class Main { public static void main(String[] args) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("문자열").append(" 뒤에 이어서 연결"); // String str = stringBuilder; // 위.. 2023. 2. 9.
자바(Java) Arrays.sort()와 Collections.sort() 둘의 큰 차이는 Arrays.sort()는 배열을 정렬해주고 Collections.sort()는 객체를 정렬해준다. 추가적으로 알고리즘에 따른 시간 복잡도 차이가 존재한다. Arrays.sort()는 평균 시간복잡도가 O(nlogn) 이고 매우 빠른 알고리즘이나 최악의 경우 시간복잡도는 O(n2) 이다. Collections.sort()는 평균 시간복잡도가 O(n) ~ O(nlogn)이다. Array.sort() 기본적으로 오름차순으로 정렬을 한다. java.util.Arrays 에 포함이 되어 있다. 정렬 기준은 숫자 > 대문자 > 소문자 > 한글순 Arrays.sort(정렬하고자 하는 객체, Collections.reverseOrder()) 내림차순으로 정렬을 한다. 정렬 기준은 반대로 한글순 > 소.. 2023. 2. 9.
자바(Java) Iterator와 hasNext() / next() / remove() Scanner 클래스에 있는 hasNext()와는 다른 아이임을 선고지 함. 1. 배경 설명 Collection framework 데이터를 저장하는 클래스들을 표준화 한 설계 그 하위의 인터페이스 (Set / List / Map) 은 데이터의 집합체들이다. Iterator - 위의 데이터 집합체에 저장되어 있는 요소들을 읽어오는 방법을 표준화한 인터페이스를 말한다. - 원래는 각 인터페이스 별로 데이터를 읽을 방법을 알아야 하는데 이 인터페이스를 사용하면 어떤 Collection 이라도 동일 방식으로 안에 있는 데이터에 접근이 가능. 즉, 쉽게쉽게 데이터 얻어 오기 위한 인터페이스라는 것. - Vector, ArrayList,LinkedList 가 상속받는 인터페이스 - 리스트 구조의 컬렉션에서 요소의 .. 2023. 2. 2.
자바(Java) 썸네일 라이브러리 Thumbnailator Spring 이라면 pom.xml에 Thumbnailator 라이브러리 추가가 필요하다. Thumbnails.of(바꾸려는 File 객체) .sourceRegion(Positions.CENTER, 100, 200) .size(가로폭, 세로폭) .toFiles(원하는 디렉토리를 가진 파일 객체, Rename.NO_CHANGE); sourceRegion 이미지를 자른다. sourceRegion의 Positions.CENTER을 설정하면 이미지의 가운데를 기점으로 자르겠다는 뜻. TOP_CENTER 로 지정하면 맨 위 가운데 부분이 기준이 됨. 만약 sourceRegion를 사용하지 않으면 가로 길이를 기준으로 이미지의 비율은 유지한 채 사이즈를 조정. size 괄호 안은 자르고자하는 크기 => 이미지 가운데.. 2022. 12. 18.
자바(Java) Multipart / MultipartFile / File (파일 업로드 관련) HttpServletRequest는 파일 업로드를 지원 안함. HttpServletRequest는 http 프로토콜의 body부분을 읽어들이는 input 스트림만을 지원 개발자는 이 스트림을 이용해서 Multipart 부분을 나누어서 사용. 보통은 구현보다는 라이브러리를 사용. 대표적인 라이브러리가 Apache 의 commons-fileupload. Spring MVC에서는 MultipartResolver Bean 도 추가 해야 함. (업로드 요청 처리를 하는 인터페이스) Multipart란? 보통 파일을 전송할 때 사용 요청 시, http body 에 데이터를 여러 부분으로 나눠 보냄. 파일을 여러개 업로드 시, body 부분에 파일이 마찬가지로 여러 부분으로 연결 전송된다. 이렇게 나눠져 전송되는 것.. 2022. 12. 18.
자바(Java) forEach() 사용법 해당 Method는 자바8 에서 Stream이 도입 되면서 등장한 Method 이다. list , array , map 과 같은 집합을 표현하는 형식들에 사용하는 Method고 해당 객체 안에 들어 있는 값을 하나씩 반복적으로 꺼내거나 처리를 할 때 사용한다. (즉, 배열에 사용하는 for 문 같은 느낌) 각 형식에 따라 사용법은 약간씩 다르다. list에서의 forEach 간결한 코딩을 위해 lamda 식으로 사용한다. yyy가 있는 자리는 임의의 매개변수를 지정한 것이다. 해당 매개 변수에 list의 값이 하나씩 반복적으로 들어간다고 보면 된다. import java.util.ArrayList; import java.util.List; public class Test { public static vo.. 2022. 12. 9.
자바(Java) int와 Integer의 차이 int 변수의 타입을 말한다. => 데이터가 저장되는 공간의 타입을 말한다. integer 기본 타입의 데이터(여기서는 int)를 객체로 취급해야할 때 사용하는 클래스 => Wrapper class 기본 타입에 대응하는 Wrapper class 기본 타입 Wrapper class byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean 기본 타입과 Wrapper class 차이 기본 타입은 값 변경 가능 / Wrapper class는 객체기 때문에 인스턴스에 저장된 값을 변경 불가 Null 초기화 불가 / Null 값을 가질 수 있다. JDK 1.5부터는 박싱과 언박싱이 필요한 상황.. 2022. 12. 9.
728x90
반응형