출처: https://stepbystep1.tistory.com/10
출처: https://java119.tistory.com/107
장점
단점
사용하는 이유
배열처럼 여러 원소로 이루어진 집합의 모든 원소에 대해서 특정 작업을 반복하기 위해서 사용한다.
자주 사용하는 상황
cf) 속도와 관련해서는 일반 for 문과 개선된 for 문은 동일하다.
for(자료형 변수명 : 배열명){
문장
}
for(자료형 한 단계 아래의 자료형의 변수명 : 배열명){
문장
}
일반 배열 원소 추출하는 예제
String[] arr = {"1-1","1-2","1-3","1-4","1-5"};
for(String s : arr) {
System.out.println(s);
}
ArrayList string 원소 추출하는 예제
ArrayList<String> arrlist = new ArrayList<String>();
arrlist.add("1-1");
arrlist.add("1-2");
arrlist.add("1-3");
for(String s : arrlist) {
System.out.println(s);
}
출처: https://mommoo.tistory.com/32
ArrayList 에서 배열로 변환
// 01) String ArrayList 를 사용할 경우
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("Test1");
arrayList.add("Test2");
arrayList.add("Test3");
String[] array = new String[arrayList.size()];
int size=0;
for(String temp : arrayList){
array[size++] = temp;
}
// 02) Integer ArrayList 를 배열로 변환할 경우
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
// 방법 1 -> 반복문을 통해서 각 요소에 접근
int[] arr1 = new int[list.size()]
for (int i = 0 ; i < list.size() ; i++) {
arr1[i] = list.get(i).intValue();
// 방법 2 -> ArrayList 를 스트림으로 변환시킨 후 , map 을 통해서 intStream을 가져오고, 그 후에 toArray() 를 통해서 배열로 만드는 방법.
int[] arr2 = list.stream()
.mapToInt(i -> i)
.toArray();
// 방법 3 -> 위와 거의 비슷한데, intValue 메서드를 통해서 각 요소를 int 형으로 변환.
int[] arr3 = list.stream()
.mapToInt(Integer::intValue)
.toArray();
// 방법 4 -> 방법 2에서 필터를 추가한 것이다. 이때 이 필터는 리스트의 null 을 걸러내는 방법.
int[] arr4 = list.stream()
.filter(i -> i != null)
.mapToInt(i -> i)
.toArray();
배열에서 ArrayList 로 변환
String[] array = new String[3];
array[0] = "Test1";
array[1] = "Test2";
array[2] = "Test3";
ArrayList<String> arrayList = new ArrayList<>();
for(String temp : array){
arrayList.add(temp);
}
출처: https://allg.tistory.com/16
toCharArray();
결론적으로 왼쪽, 오른쪽 공백을 지워주는 메서드이다. 하지만 그냥 선언만 해서는 안된다.
String str = " 문자열에 공백이 있습니다. ";
System.out.println(str);
str = str.trim();
System.out.println(str);
- 3번째 줄과 같이 'str =' 처럼 원래 문자열에다가 적용을 시켜주어야 한다.
- 만약 가운데에 공백인 문자열인 경우에는 replace 함수를 적용하면 된다.
### Q8. possible lossy conversion from double to int
출처: https://ninearies.tistory.com/272
간단하다. double 형을 강제 형변환을 시켜주지 않아서 나오는 에러이다.
### Q9. ArrayList sort 총정리
출처: https://hianna.tistory.com/569
> 1. Collection Sort
``` java
ArrayList<String> list = new ArrayList<>(Arrays.asList("C", "A", "B", "a"));
System.out.println("원본 : " + list); // [C, A, B, a]
// 오름차순으로 정렬
Collections.sort(list);
System.out.println("오름차순 : " + list); // [A, B, C, a]
// 내림차순으로 정렬
Collections.sort(list, Collections.reverseOrder());
System.out.println("내림차순 : " + list); // [a, C, B, A]
// 대소문자 구분없이 오름차순
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
System.out.println("대소문자 구분없이 오름차순 : " + list); // [a, A, B, C]
// 대소문자 구분없이 내림차순
Collections.sort(list, Collections.reverseOrder(String.CASE_INSENSITIVE_ORDER));
System.out.println("대소문자 구분없이 내림차순 : " + list); // [C, B, a, A]
- List.sort()
// ArrayList 준비
ArrayList<String> list = new ArrayList<>(Arrays.asList("C", "A", "B", "a"));
System.out.println("원본 : " + list); // [C, A, B, a]
// 오름차순으로 정렬
list.sort(Comparator.naturalOrder());
System.out.println("오름차순 : " + list); // [A, B, C, a]
// 내림차순으로 정렬
list.sort(Comparator.reverseOrder());
System.out.println("내림차순 : " + list); // [a, C, B, A]
// 대소문자 구분없이 오름차순 정렬
list.sort(String.CASE_INSENSITIVE_ORDER);
System.out.println("대소문자 구분없이 오름차순 : " + list); // [a, A, B, C]
// 대소문자 구분없이 내림차순 정렬
list.sort(Collections.reverseOrder(String.CASE_INSENSITIVE_ORDER));
System.out.println("대소문자 구분없이 내림차순 : " + list); // [C, B, a, A]
- 그 뒤에 사용자가 정의해서 정렬을 할 수 있는 경우가 있는데, 이는 다음에 알아보자.
### Q10. 문자열을 숫자로 변환!
자꾸 까먹는데, 잘 기억해 놓자.
> 문자열을 숫자로
Integer.parseInt("문자열")
Double.parseDouble("문자열")
### Q11. ArrayList 이중배열
출처: https://devyoseph.tistory.com/148
다음과 같은 예시를 보면서 익혀보자.
``` java
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer>[] arr = new ArrayList[100]; //0번~99번 index
for(int i=0; i<100;i++) {
arr[i]=new ArrayList<Integer>(); //배열 원소를 인스턴스로 지정한다
}
}}
// 출력 부분
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer>[] arr = new ArrayList[100];
for(int i=0; i<100;i++) {
arr[i]=new ArrayList<Integer>();
}
arr[0].add(1); // [0]번 인덱스에 1을 추가했다
arr[3].add(2); // [3]번 인덱스에 2을 추가했다
for(int i=0; i<100;i++) { //출력: 0~99[index] 범위를 출력
for(int j=0; j<arr[i].size();j++) { //[0]~[해당 list의 크기-1] 범위 출력
System.out.println(arr[i].get(j));
}
//1과 2가 출력된다
}
}}
출처: http://mwultong.blogspot.com/2007/03/java-raise-power-pow.html
a == 밑, b == 지수
둘이 합치면 미지수? ㅋㅋ
출처: https://page-view.tistory.com/10
// boolean matches(String regex) => 매칭 여부 확인
ex) "abc".matches("[a-z]"); => true // (a부터 z 까지에 알파벳중에서 다 매칭이 되는지 여부)
// String replaceAll(String regex, String replacement) => 매칭되는 값 변경
ex) "abc123".replaceAll("[a-z]", "*"); => ***123 // (매칭이 되면 값을 변경한다.
// String[] split(String regex)
ex) "123b456".split("[a-z]"); => ["123","456"] // 만약 정규식에서 걸리는 것이 있으면 그것으로 스플릿 해줘
출처: https://mine-it-record.tistory.com/124