[포스코x코딩온] 웹개발자 풀스택 부트캠프8기
[포스코x코딩온] JAVA- 표준배열(2차원 배열, arrays 메소드)
항상 발전하는 개발자
2023. 10. 21. 13:02
728x90
표준 배열
배열
- 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
- 처음 선언한 배열의 크기는 변경할 수 없다.(정적 할당)
//배열 선언
int[] intArr;
char[] charArr;
//배열 생성
//배열 생성하면 크기 변경이 안된다.
int[] intArr1 = new int[5];
//배열 초기화
int[] intArr2 = {1,2,3,4,5};
Scanner sc = new Scanner(System.in);
for(int i=0; i < intArr1.length; i++) {
intArr1[i] = sc.nextInt();
}
System.out.println(Arrays.toString(intArr1));
sc.close();
배열 출력
- for문 활용
Scanner sc = new Scanner(System.in);
for(int i=0; i < intArr1.length; i++) {
intArr1[i] = sc.nextInt();
}
System.out.println(Arrays.toString(intArr1));
sc.close();
- Arrays 클래스의 toString 메소드 활용
- Arrays 클래스는 배열을 다루기 위한 다양한 메소드가 포함되어 있다.
import java.util.Arrays;
System.out.println(Arrays.toString(intArray));
2차원 배열
//2차원 배열
int[][] intDoubleArr;
char[][] charDoubleArr;
int[][] intDoubleArr2 = new int[2][3];
int intDoubleArr3[][] = {{0,1,2},{3,4,5}};
for - each문
- 배열의 각 원소에 순차적으로 접근하는 데 유용하다.
//for-each문
for(int value: intArr1) {
System.out.print(value + " ");
}
- 평균 구하기 예시
package Java_Basic;
import java.util.Scanner;
public class Practice_array_231021 {
public static void main(String[] args) {
//1차원 배열 평균 구하기
// Scanner sc = new Scanner(System.in);
// int[] intSum = new int[5];
// int sum = 0;
// int avg;
//
// System.out.println(intSum.length + "개의 정수를 입력해주세요.");
// for(int i=0; i< intSum.length; i++) {
// intSum[i] = sc.nextInt();
// }
//
// for(int a=0; a<intSum.length; a++) {
// sum += intSum[a];
// }
// System.out.println("평균" + (double)sum/intSum.length);
// sc.close();
//2차원 배열 평균 구하기
double[][] score = {
{3.3, 3.4},
{3.5, 3.6},
{3.7, 4.0},
{4.1, 4.2}
};
double sum = 0;
System.out.print(score.length);
for(int i=0; i<score.length; i++) {
for(int a=0; a<score[i].length; a++) {
sum += score[i][a];
}
}
int n = score.length;
int m = score[0].length;
System.out.println("전체 평균은 " + sum/(n*m));
}
}
Arrays 메소드
- copyOf(arr, copyArrayLength) : 배열 전체를 복사해 복사할 길이만큼 지정하여 복사한 새로운 배열로 반환
- copyOfRange(arr, sIdx, eIdx) : 배열 시작 인덱스와 끝 인덱스를 지정하여 복사한 새로운 배열 반환
- fill(arr, n) : 배열의 모든 요소를 동일한 값으로 채워주는 함수
- toString(arr) : 배열을 문자열로 변환하여 반환
- sort(arr) : 배열 내의 요소들을 오름차순으로 정렬(원본 배열 순서 변경)
- equals(arr1, arr2) : 두 배열의 각각의 요소 값이 동일한지 비교하여 T/F로 반환
- deepEquals(arr1, arr2) : 단일 차원 또는 다차원 배열인 두 배열이 같은지 비교하여 T/F 반환
- binarySearch(arr, idx) : 배열의 특정 인덱스 요소 값을 이진 검색 알고리즘을 사용하여 검색한 후, 해당 위치 반환
- 이진 검색 알고리즘을 사용하므로 매개변수로 전달되는 배열이 sort() 등을 사용하여 미리 정렬되어 있어야만 제대로 동작
package Java_Basic;
import java.util.Arrays;
import java.util.Comparator;
public class Array_method {
public static void main(String[] args) {
int[] arr = {0,1,2,3,4};
// copyOf(arr, copy length)
//처음부터 복사 시작
int[] newArr1 = Arrays.copyOf(arr, arr.length);
int[] newArr2 = Arrays.copyOf(arr, 3);
int[] newArr3 = Arrays.copyOf(arr, arr.length+3);
System.out.println(Arrays.toString(newArr1));
System.out.println(Arrays.toString(newArr2));
System.out.println(Arrays.toString(newArr3));
//copyOfRange
//범위를 지정하여 복사 가능
int[] newArr4 = Arrays.copyOfRange(newArr3, 1, 4);
System.out.println(Arrays.toString(newArr4));
//fill
//초기화 가능 & 기존 값을 지우고 넣어준 값으로 변경
int[] fillArr1 = new int[5];
Arrays.fill(fillArr1, 1);
System.out.println(Arrays.toString(fillArr1));
//시작 인덱스와 끝 인덱스 지정 가능
int[] fillArr2 = new int[5];
fillArr2[0] = 1;
fillArr2[1] = 2;
fillArr2[2] = 3;
//3인덱스부터 끝 인덱스까지 100으로 채운다.
Arrays.fill(fillArr2, 3, fillArr2.length, 100);
System.out.println(Arrays.toString(fillArr2));
//sort
//오름차순 정렬
int[] sortArr1 = {0,100,1,2,3,4};
Arrays.sort(sortArr1);
System.out.println(Arrays.toString(sortArr1));
//내림차순 정렬
Integer[] sortArr2 = {0,1,2,3,4};
Arrays.sort(sortArr2, Comparator.reverseOrder());
System.out.println(Arrays.toString(sortArr2));
//equals
//T/F로 반환한다.
int[] equalArr1 = {1,2,3,4};
int[] equalArr2 = {1,2,3,4};
int[] equalArr3 = {1,3,2,4};
int[] equalArr4 = {1,2,3,4,5};
System.out.println(Arrays.equals(equalArr1, equalArr2));
System.out.println(Arrays.equals(equalArr1, equalArr3));
System.out.println(Arrays.equals(equalArr1, equalArr4));
//deepEquls
int doubleArr1[][] = {{1,2},{3,4},{5,6}};
int doubleArr2[][] = {{1,2},{3,4},{5,6}};
int doubleArr3[][] = {{1,3},{5,4},{7,6}};
System.out.println(Arrays.deepEquals(doubleArr1, doubleArr2));
System.out.println(Arrays.deepEquals(doubleArr1, doubleArr3));
//binarySearch
//해당 인덱스 값 반환
System.out.println(Arrays.binarySearch(equalArr4, 3));
}
}
ArrayList
- 표준 배열보다 조금 느릴 수 있지만, 배열에서 많은 조작이 필요할 때 유용하게 사용되는 클래스
- 크기를 미리 정하지 않아도 되는 배열(동적 할당)
add(element) | ArrayList 맨 뒤에 element 추가 |
add(index, element) | index 위치에 element 삽입 |
addAll(ArrayList) | ArrayList 뒤에 ArrayList 추가 |
size() | ArrayList의 길이 리턴 |
get(index) | index에 해당하는 요소 리턴 |
indexOf(params) | params와 같은 첫 번째 요소의 index 리턴, 없으면 -1 리턴 |
remove(index) | index의 요소 삭제 |
clear() | 모든 요소 삭제 |
package Java_Basic;
import java.util.ArrayList;
public class ArrayList_231021 {
public static void main(String[] args) {
ArrayList<Integer> arrList1 = new ArrayList<>();
ArrayList<String> arrList2 = new ArrayList<>();
arrList1.add(10);
arrList1.add(8);
arrList1.add(6);
arrList1.add(4);
arrList1.add(0,1);
//addAll
ArrayList<Integer> arrList3 = new ArrayList<>();
arrList3.add(1);
arrList3.add(2);
arrList3.addAll(arrList3);
//indexOd
//같은 값의 인덱스 번호 찾
System.out.println(arrList1.indexOf(1));
System.out.println(arrList1.indexOf(12));
for(int i=0; i < arrList1.size(); i++) {
System.out.println(arrList1.get(i));
}
}
}
package Java_Basic;
import java.util.ArrayList;
import java.util.Scanner;
public class Practice_arry_method {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<String> arr = new ArrayList<>();
String input;
System.out.println("문자를 입력해주세요:");
while(!(input = sc.next()).equals("exit")) {
arr.add(input);
System.out.println("문자를 입력해주세요:");
}
System.out.println(arr.toString());
}
}
Java를 학부 시절 배웠던 내용이라 Javascript를 배울 때보다는 수월한거 같다. 그래서 복습하는 느낌으로 공부를 하고 있다.
지금 너무 하는 일이 많아서 정신 없지만 다 하고 나면 뿌듯하고 한층 더 성장해 있을 걸 알기에 포기하지 않고 다 할 것이다!!(학교 시험, 교육, 해커톤 준비, 알바...)
728x90