💬 업데이트 ing...
✅ int ↔️ char 변환 방법
int ➡️ char
(char) (i + '0')
Character.forDigit(i, 10)
: i를 10진수 형태로 char로 변환
char ➡️ int
(int) (c - '0')
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 같은 자료형을 활용해야 함!
'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 |