문제 풀 때 헷갈리는 자바 문법 정리

2024. 1. 19. 16:59·Java
목차
  1. ✅ StringTokenizer 와 split 차이
  2. 🔻 StringTokenizer
  3. ✅ Arrays.sort
  4. ✅ Collections, Collection
반응형

💬 업데이트 ing...

✅ int ↔️ char 변환 방법

int ➡️ char

  1. (char) (i + '0')
  2. Character.forDigit(i, 10) : i를 10진수 형태로 char로 변환

char ➡️ int

  1. (int) (c - '0')
  2. Character.getNumericValue(c) 

✅ 자바는 입력에서 char 형을 받을 수 없다

→ 무조건 String으로 받아와 첫 글자를 읽어서 저장함

char c = bf.readline().chartAt(0);
//혹은 입력받은 문자열을 문자의 배열로 변환도 가능하다
char[] chars = bf.readline().toCharArray();

 

✅ char 배열의 초기값은  ⇒  '/0'  이다 (NULL, ' ', ... 등등 아님!)

 

✅ 배열을 특정 객체로 초기화하고 싶은 경우, for문을 통해 각각 생성해 줘야 함

      : Arrays.fill(arr, new O)로 생성할 경우, 주소 공유함

✅ 배열을 규칙적인 값으로 채우기 (=/=  Arrays.fill(arr) )

모든 타입의 배열에서 사용 가능

//기본(람다)
Arrays.setAll(arr, idx -> idx);

//조건이 복잡한 경우(ex. 기본은 2의 배수이지만, 4의 배수면 0 할당)
Arrays.setAll(arr, num -> {
	if((num * 2) % 4 == 0) return 0;
	else return num * 2;
	});

✅ Primitive 자료형 배열 ⇒  wrapper 클래스 객체 배열

Integer[] translated = Arrays.stream(arr).boxed().toArray(Integer[]::new);

✅ StringTokenizer 와 split 차이

  • StringTokenizer
    • 구분자(delim)로 문자 1개만 사용 가능
    • 빈 문자열을 토큰으로 인식하지 않음
  • split
    • 정규식을 사용하므로 문자 1개 이상 가능
    • 빈 문자열을 토큰으로 인식함

🔻 StringTokenizer

      ▫️ StringTokenizer (String str) : 디폴트 구분자 기본 구분자로 str 나눔

           * 기본 구분자 : " ", \t, \n, \r

      ▫️ StringTokenizer (String str, String delim) : str을 구분자(delim)로 나눔

      ▫️ StringTokenizer (String str, String delim, boolean returnDelims)

           str을 지정된 구분자로 나눔 & 구분자를 토큰에 포함 (true) , 포함하지 않음(false)

           EX) A_B_C >> { "A", "_" , "B", "_" , "C"}

 

🔻 진수 변환 (return형; String)

        ▫️ 2진수 변환 : Integer.toBinaryString(int num)

        ▫️ 8진수 변환 : Integer.toHexString(int num)

        ▫️ 16진수 변환 : Integer.toOctalString(int num)

 

✅ 이진수에서 1의 개수 세고자 할 때 >> Integer.bitCount(int n)

      효율성 압도적

 

✅ String에서 특정 문자 개수를 세고자 할 때

      replaceAll() or split() + length() 를 사용하는 것 보다, toCharArray()로 분할한 뒤, 직접 카운팅 하는 것효율성은 더 좋음 (replaceAll, split 이 생각보다 시간을 많이 잡아먹는다...)


✅ Arrays.sort

Arrays.sort( T[] arr, Comparator < ... > c )
  • Comparator 구현체를 넘겨줘야 하는 경우
    • Comparable이 구현되지 않은 클래스의 인스턴스를 정렬 하는 경우
    • 오름차순(natural ordering)과 다른 기준으로 정렬하고 싶은 경우

🔸 Comparator 구현체 넘겨주는 방법

(1) 구현체를 직접 정의해 넘겨주는 경우

(2) 람다식으로 간단하게 표현 → 이 경우 Integer, Character같은 래퍼 클래스 대상으로만 가능

//1. 구현체 직접 정의
Arrays.sort( arr, new Comparator<Integer>() {
    @Override
    public int compare(Integer o1, Integer o2){
    	return o2 - o1; //내림차순
    }
});
//2. 람다식으로 간편 표현
Arrays.sort(arr, (o1, o2) -> o2 - o1);

Arrays.sort( Object[] a, int fromIndex, int toIndex )
  • 범위를 지정해 객체를 정렬하는 경우.
    • fromIndex ~ toIndex-1 (exclusive)

✅ Collections, Collection

📌 List interface를 구현한 ordered collection 타입이어야 함!
      → Map, Set 같은 순서 없는 타입은 정렬 불가능!!!

 

🔸 Map, Set을 정렬하기 위해선 LinkedHashMap, SortedMap 같은 자료형을 활용해야 함!

 

 

 

더보기

출처

https://velog.io/@jwkim/java-sorting

 

반응형

'Java' 카테고리의 다른 글

[Java] String format을 사용해 출력하기  (0) 2024.05.02
정규 표현식 : REGEX  (1) 2024.02.08
[ERROR] Web server failed to start. Port 8080 was already in use. 해결법  (0) 2022.09.24
  1. ✅ StringTokenizer 와 split 차이
  2. 🔻 StringTokenizer
  3. ✅ Arrays.sort
  4. ✅ Collections, Collection
'Java' 카테고리의 다른 글
  • [Java] String format을 사용해 출력하기
  • 정규 표현식 : REGEX
  • [ERROR] Web server failed to start. Port 8080 was already in use. 해결법
mopipi
mopipi
칠전팔기
mopipi
공부하는 사람
mopipi
전체
오늘
어제
  • 분류 전체보기 (162)
    • Java (4)
    • Spring (21)
      • Spring boot 입문 (16)
      • [dsc] Spring-Novice-Study (3)
    • SQL (5)
    • Algorithm (127)
      • Programmars (38)
      • Beakjoon (85)
    • Git (1)
    • 생각들 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

hELLO· Designed By정상우.v4.5.2
mopipi
문제 풀 때 헷갈리는 자바 문법 정리

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.