그저 내가 되었고
☕️Java:: ArrayList & removeIf & switch case 본문
Array vs ArrayList
Array 동일한 데이터 유형의 고정된 수의 요소를 보유하는 컨테이너 객체. 배열의 길이는 배열 객체를 선언하는 동안 정의되며 이후 변경 불가.
ArrayList 크기가 고정되어 있지 않음(그래서 총 몇개의 원소를 받아야할지 모르는 알고리즘 풀 때 매우 유용..!) 새 요소를 추가해야 할 때마다 (선언한 ArrayList 이름).add((추가하고 싶은 요소))를 실행하여 간단히 추가할 수 있음.
ArrayList 사용 예시) 백준 2501번 약수 구하기; Java 11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
List<Integer> divisor = new ArrayList<>(); //Integer를 받는 ArrayList 선언
for (int i = 1; i <= N; i++) if (N % i == 0) divisor.add(i); //(선언한 ArrayList 이름).add(추가할 요소) 이렇게 간단히 새로운 요소 추가 가능
if (divisor.size() >= K) System.out.println(divisor.get(K-1));
else System.out.println(0);
}
}
|
cs |
ArrayList에서 removeIf 사용하기
ArrayList의 removeIf() 메소드는 인자로 전달된 조건에 따라 리스트의 아이템들을 삭제함.
조건에 부합하는 것은 삭제, 그렇지 않은 것은 남김.
1
2
3
4
5
6
7
8
9
10
|
List<Integer> numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9));
System.out.println("numbers: " + numbers.toString());
numbers.removeIf(n -> (n % 3 == 0));
System.out.println("numbers(after remove): " + numbers.toString());
//결과
numbers: [1, 2, 3, 4, 5, 6, 7, 8, 9]
numbers(after remove): [1, 2, 4, 5, 7, 8]
|
cs |
switch/case 구문
if 문과 비슷하지만 좀 더 일정한 형식이 있는 조건·판단문
입력 변수의 값과 일치하는 case 입력값(입력값1, 입력값2, …)이 있다면 해당 case 문에 속한 문장들이 실행된다.
case 문마다 break문이 있는데 해당 case 문을 실행한 뒤 switch 문을 빠져나가기 위한 것이다.
만약 break 문이 빠져 있다면 그 다음의 case 문에 속한 문장들이 실행된다.
형식
1
2
3
4
5
6
7
8
9
10
|
switch(입력변수) {
case 입력값1: ...
break;
case 입력값2: ...
break;
...
default: ...
break;
}
|
cs |
예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
public class Sample {
public static void main(String[] args) {
int month = 8;
String monthString = "";
switch (month) { // 입력 변수의 자료형은 byte, short, char, int, enum, String만 가능하다.
case 1: monthString = "January";
break;
case 2: monthString = "February";
break;
case 3: monthString = "March";
break;
case 4: monthString = "April";
break;
case 5: monthString = "May";
break;
case 6: monthString = "June";
break;
case 7: monthString = "July";
break;
case 8: monthString = "August";
break;
case 9: monthString = "September";
break;
case 10: monthString = "October";
break;
case 11: monthString = "November";
break;
case 12: monthString = "December";
break;
default: monthString = "Invalid month";
break;
}
System.out.println(monthString);
}
}
|
cs |
결과? August
switch 문의 입력이 1이면 January라는 문자열이, ... 12면 December라는 문자열이 출력되는 예제이다.
이 예제는 month가 8로 고정되어 있기 때문에 August가 출력될 것이다.
switch 문은 month의 값이 1이면 case 1: 문장이 실행되고 2이면 case 2: 문장이, 3이면 case 3: … 이런 식으로 수행된다.
만약 month에 1에서 12 사이의 숫자가 아닌 다른 값이 저장되어 있다면 default: 문장이 수행된다.
이와 같이 입력값이 정형화되어 있는 경우 if 문보다는 switch/case 문을 쓰는 것이 코드의 가독성이 좋다.
switch/case 문은 if 문으로 변경이 가능하지만 if 문으로 작성된 모든 코드를 switch 문으로 변경할 수는 없다.
'개발 > Java' 카테고리의 다른 글
☕️Java:: 다형성(polymorphism) (1) | 2024.02.11 |
---|---|
☕️Java:: 백준 자바 2098번(외판원 순회) (0) | 2023.10.29 |
☕️Java:: 백준 자바 1157번(단어 공부) (0) | 2023.10.24 |
☕️Java:: forEach 람다 출력 & 메소드 참조(::) 출력 (1) | 2023.10.14 |
☕️Java:: 백준 자바 20499번 (0) | 2023.10.06 |