[자바 개념] HashMap과 TreeMap HashMap TreeMap 공통점 Java에서 Map 인터페이스를 구현하는 구현체 차이점 요소의 순서가 보장되지 않는다 요소의 순서가 보장된다. 기본적으로 key 값 오름차순 해시 테이블 기반이라 평균적으로 상수 시간에 처리 가능 레드 블랙 트리 기반이라 평균적으로 longN 시간에 처리 가능 자바 2023.08.25
[자바 개념] Comparable과 Comparator 1. 필요 이유 학생이라는 객체를 만들고, 해당 객체의 속성으로 나이, 성적 평균이 있다고 하자. 학생A와 학생B를 비교하고자 할 때 어떻게 비교를 해야 할까? 사용자가 기준을 정해주지 않으면 뭐로 비교를 해야 하는지 알 수가 없다. 이럴 때 Comparable 혹은 Comparator 인터페이스의 비교 메서드를 사용해야 한다. 2. Comparable 1) 개념 객체를 비교하는데 사용하는 인터페이스. 자기 자신과 매개변수로 들어오는 객체를 비교한다. 2) 메서드 compareTo(T o) 3) 구현 class Student implements Comparable { int age; int score; Student(int age, int score) { this.age = age; this.score .. 자바 2023.04.10
[자바 개념] Date 1. 개념 날짜를 표현하는 클래스 2. 생성 Date now = new Date(); //현재 날짜 생성 Date d = new Date(2020, 1, 1); // 2020년 1월 1일 날자 생성 3. 메서드 equals() 두 날짜가 같은 날자면 true 리턴 before() 호출한 것이 전달된 것보다 이전이면 true Date d1 = new Date(2020, 1, 1); Date d2 = new Date(2019, 2, 2); d1.before(de); // false 리턴 after() 호출한 것이 전달된 것보다 나중이면 true 자바 2023.03.19
[자바 개념] StringTokenizer 1. 개념 문자열이 특정 구분자로 연결되어 있을 경우, 구분자를 기준으로 부분 문자열을 분리하기 위해 사용하는 java.util 패키지에 있는 클래스 2. 방법 StringTokenizer st = new StringTokenizer("문자열", "구분자") 3. 특징 구분자에 공백을 주면 문자 하나씩 구분된다 4. 메서드 countTokens() 꺼내지 않고 남아 있는 토큰의 수 hasMoreTokens() 남아 있는 토큰이 있는지 여부 nextToken() 토큰을 하나씩 꺼내옴 5. split와 stringTokenizer의 차이 split stringTokenizer 위치 String 클래스에 있는 메서드 java.util 패키지에 있는 클래스 구분 방법 정규표현식으로 문자열 구분 문자 또는 문자열.. 자바 2023.03.19
[자바 개념] IO(입출력) 1. 스트림 1) 개념 데이터가 입출력되는 곳 2) 종류 구분 바이트 기반 스트림 문자 기반 스트림 입력 스트림 출력 스트림 입력 스트림 출력 스트림 최상위 클래스 InputStream OutputStream Reader Writer 하위 클래스 XXXInputStream XXXOutputStream XXXReader XXXWriter 입력 스트림 프로그램이 데이터를 입력받음 출력 스트림 프로그램이 데이터를 보냄 바이트 기반 스트림 그림, 멀티미디어, 문자 등 모든 종류의 데이터를 받고 보낼 수 있음 문자 기반 스트림 문자만 받고 보낼 수 있도록 특화 3) 특징 java.io 패키지에서 사용 가능 2. Reader 1) 개념 문자 기반 입력 스트림의 최상위 클래스로 추상 클래스. 모든 문자 기반 입력 스.. 자바 2023.03.19
[자바 개념] Optional<T> 1. 개념 T타입의 객체를 감싸는 래퍼 클래스 2. 특징 최종 연산의 결과를 그냥 반환하는 게 아니라 Optional 객체에 담아서 반환을 하면 반환된 결과가 null인지 매번 if문으로 체크하는 대신 Optional에 정의된 메서드를 통해서 간단히 처리 가능 널 체크를 위한 if문 없이도 NullPointerException이 발생하지 않는 보다 간결하고 안전한 코드를 작성하는 것이 가능 3. Optional 객체 생성하기 1) of 값이 null이면 NullPointerException을 발생시킴 들어갈 값이 null 아닌 것이 확실할 때 사용 2) ofNullable 값이 null이어도 NullPointerException을 발생시키지 않음 들어갈 값이 null인 것이 확실하지 않을 때 사용 3) .. 자바 2023.03.08
[자바 개념] 정규표현식, Pattern 1. 개념 문자열이 정해져 있는 형식(정규 표현식)으로 구성되어 있는지 검증해야 하는 경우에 사용하는 것 2. 정규표현식 문법 Regular Expression Description ^ 문자열의 시작 $ 문자열의 끝 . 임의의 문자 1개를 의미 * 문자가 0번 이상 반복 + 문자가 1번 이상 반복 ? 문자가 0번 혹은 1번 Regular Expression Description [ ] 문자의 집합 범위를 의미 [0-9] 숫자 0부터 9 [a-z] 알파벳 a부터 z [a-zA-Z] 알파벳 a부터 z + 알파벳 A부터 Z [a-zA-Z0-9] 알파벳 a부터 z + 알파벳 A부터 Z + 숫자 0부터 9 [^a-z] 알파벳 a부터 z가 아닌 것 (앞에 ^ 가 붙어있을 경우 not을 의미) Regular Expr.. 자바 2023.02.10
[자바 개념] StringBuffer, StringBuilder 1. StringBuffer와 StringBuilder 1) 개념 문자열을 다루는 클래스의 한 종류 2) 특징 문자열을 저장하는 가변 버퍼를 가지고 있기 때문에 저장된 문자열의 수정이 가능하다 문자열의 크기가 늘어나면 내부 버퍼 크기를 자동으로 조절한다. 한번 값이 할당되더라도 기존 데이터에 새로운 데이터를 더하는 방식을 취해서 속도가 빠르다 AbstractStringBuilder 라는 추상 클래스를 상속받는다. 값이 변경되더라도 같은 주소 공간을 참조하게 된다. 3) StringBuffer와 StringBuilder의 차이점 StringBuffer 동기화를 지원하여 멀티 스레드 환경에서도 안전하게 동작한다 StringBuilder 동기화를 지원하지 않는다 동기화를 지원하지 않기 대문에 StringBuf.. 자바 2023.02.06
[자바 개념] 자바 데이터 타입 1.기본타입 1) 종류 종류 설명 저장공간 범위 boolean 논리값 1bit true / false char 유니코드 문자 16bits \u0000 ~ \uFFFF byte 부호 있는 정수 8bits -128~127 short 부호 있는 정수 16bits -32768 ~ 32767 int 부호 있는 정수 32bits -2147483648 ~ 2147483647 long 부호 있는 정수 62bits -9223372036854775808 ~ 9223372036854775807 float 실수 32bits 1.40239846E-45f ~ (표현 가능 양수 범위) 3.40282347E+38f double 실수 64bits 4.94065645841246544E-324 ~ (표현 가능 양수 범위) 1.797693.. 자바 2023.01.13
[자바 개념] stream 1. 스트림의 개념 자바 8부터 추가된 컬렉션과 배열의 저장 요소를 하나씩 참조해서 람다식(함수적 스타일)으로 처리할 수 있도록 해주는 반복자 2. 스트림의 특징 1) 람다식으로 요소 처리 코드를 제공한다 스트림이 제공하는 대부분의 요소 처리 메소드는 함수적 인터페이스 매개 타입을 가지기 때문에 람다식 또는 메소드 참조를 이용해서 요소 처리 내용을 매개값으로 전달할 수 있다 ArrayList arrayList = new ArrayList(); Stream stream = arrayList.stream(); stream.forEach( s -> System.out.println(s)); 2) 내부 반복자를 사용하므로 병렬 처리가 쉽다 외부 반복자 개발자가 코드로 직접 컬렉션의 요소를 반복해서 가져오는 코드.. 자바 2023.01.13