inblog logo
|
from-web-developer
    JAVA

    배열

    Dec 15, 2023
    배열
    Contents
    배열 (array)정의배열의 초기화for-each 루프2차원 배열linked listarraylist

    배열 (array)

    • 스칼라 Scala
      • 데이터를 하나 가짐
        데이터를 하나 가짐
    • 벡터 Vector
    여러가지 모인 것
    여러가지 모인 것
     

    정의

    배열 (array) - 여러 개의 변수를 하나로 묶어 넣은 것
인덱스 (index) - 배열의 요소들이 불리는 번호 / [0] 부터 시작
    배열 (array) - 여러 개의 변수를 하나로 묶어 넣은 것 인덱스 (index) - 배열의 요소들이 불리는 번호 / [0] 부터 시작
     
     
    • 형태
      • int[ ]
        s
        =
        new int
        [10]
        배열의 자료형
        배열의 이름
        ㅤ
        new 연산자
        배열의 크기
        💡
        1. int[ ] values; → 자바 2. int values[ ]; → C언어
         
        public class ArrayTest01 { public static void main(String[] args) { int[] s = new int[10]; for (int i = 0; i < s.length; i++) { s[i] = i; System.out.print(s[i] + " "); } } }
        반복문을 이용 시 배열의 크기는 s.length로 알 수 있다.
     

    배열의 초기화

    public class ArrayTest02 { public static void main(String[] args) { int[] scores = {10, 20, 30, 40, 50}; for (int i = 0; i < scores.length; i++) { System.out.print(scores[i]+" "); } } }
    배열의 선언과 동시에 { } 사이에 값 지정 연산자 new를 사용하지 않아도 생성 가능
    💡
    배열에 저장되는 수를 미리 알고 있는 경우에 사용
     

    for-each 루프

    • 형태
      • for
        ( int e :
        list)
        ㅤ
        변수
        배열명
        ublic class ArrayTest03 { public static void main(String[] args) { int[] nambers = {10, 20, 30}; for (int value : nambers) System.out.print(value+ " "); } }
        import java.util.Arrays; public class ArrayTest03a { public static void main(String[] args) { int[] nambers = {10, 20, 30}; System.out.println(Arrays.toString(nambers)); } }
        Arrays 클래스의 toString( ) 메소드 사용
    💡
    배열은 연속된 공간, 스캔이 빠르다(풀스캔), 크기가 결정되면 구조 변경 불가능

    2차원 배열

    • 형태
      • int[ ][ ] s
        =
        new int
        [3]
        [5];
        2개의 대괄호
        ㅤ
        ㅤ
        행의 개수
        열의 개수

    2차원 배열의 초기화

    • 같은 행끼리 중괄호
      • int[ ][ ]
        testArray = {
        ㅤ
        {10, 20, 30},
        ㅤ
        {40, 50, 60}
        }
        ㅤ
    • 극장에 앉아 있는 각 행의 관객수
    public class TheaterSeats { public static void main(String[] args) { int [][] seats = { {0,0,0,1,1,0,0,0,0,0}, {0,0,1,1,0,0,0,0,0,0}, {0,0,0,1,1,0,1,1,1,0}}; int count = 0; int[] seat1 = seats[0]; for (int i = 0; i < seat1.length; i++) { System.out.println(seat1[i]); count = count + seat1[i]; } System.out.print("첫번째 행의 관객수: " + count); } }
    첫번째 행의 관객수
    💡
    모듈화 (리팩토리 가능)
    public class TheaterSeats { public static void main(String[] args) { int [][] seats = { {0,0,0,1,1,0,0,0,0,0}, {0,0,1,1,0,0,0,0,0,0}, {0,0,0,0,0,0,1,1,1,0}}; int sum = 0; int count = 0; count = 0; int[] seat1 = seats[0]; for (int i = 0; i < seat1.length; i++) { count = count + seat1[i]; } System.out.print("첫번째 행의 관객수: " + count); sum = sum + count; int[] seat2 = seats[1]; count = 0; for (int i = 0; i < seat2.length; i++) { count = count + seat2[i]; } System.out.print("두번째 행의 관객수: " + count); sum = sum + count; int[] seat3 = seats[2]; count = 0; for (int i = 0; i < seat3.length; i++) { count = count + seat3[i]; } System.out.print("세번째 행의 관객수: " + count); sum = sum + count; } }
    두번째, 세번째 행 관객수까지
    💡
    int count = count + seat1[i]; ⇒ 누적이 안됨 count = 0을 하는 이유는 0이 누적된 값으로 되기 때문에 다시 0으로 세팅해주는 것
     
    💡
    int row = -1; ⇒ 처음부터 row++을 하면서 모든 식을 동일화 (=부품의 모듈화)
    public static void main(String[] args) { int [][] seats = { {0,0,0,1,1,0,0,0,0,0}, {0,0,1,1,0,0,0,0,0,0}, {0,0,0,0,0,0,1,1,1,0}}; int sum = 0; int count = 0; int row = -1; row++; count = 0; for (int i = 0; i < seats[row].length; i++) { count = count + seats[row][i]; } System.out.println(row + "번째 행의 관객수: " + count); sum = sum + count; row++; count = 0; for (int i = 0; i < seats[row].length; i++) { count = count + seats[row][i]; } System.out.println(row + "번째 행의 관객수: " + count); sum = sum + count; row ++; count = 0; for (int i = 0; i < seats[row].length; i++) { count = count + seats[row][i]; } System.out.println(row + "번째 행의 관객수: " + count); sum = sum + count; System.out.println("전체 관객수는: " + sum); } }
    notion image
     
     
    • for문으로 반복되는 부분 통일
    public class TheaterSeats { public static void main(String[] args) { int [][] seats = { {0,0,0,1,1,0,0,0,0,0}, {0,0,1,1,0,0,0,0,0,0}, {0,0,0,0,0,0,1,1,1,0}, {1,1,0,0,0,0,1,1,1,0}}; int sum = 0; int count = 0; for (int row = 0; row < seats.length; row++) { count = 0; for (int i = 0; i < seats[row].length; i++) { count = count + seats[row][i]; } System.out.println(row + "번째 행의 관객수: " + count); sum = sum + count; } System.out.println("전체 관객수는: " + sum); } }
    💡
    int count = 0; for문 안에 집어 넣으면 계속 0이 돼서 for문 위에 올려야 함
    notion image
     
    • 총 관객수만 구하는 프로그램
      • public class TheaterSeatsBook { public static void main(String[] args) { int [][] seats = { {0,0,0,1,1,0,0,0,0,0}, {0,0,1,1,0,0,0,0,0,0}, {0,0,0,0,0,0,1,1,1,0}}; int count = 0; for (int i = 0; i < seats.length; i++) { for (int k = 0; k < seats[i].length; k++) { count += seats[i][k]; } } System.out.println("전체 관객수는: " + count); } }
        count 누적의 갯수
        💡
        seats.lengt -> 열의 갯수
         

    linked list

    • 컬랙션은 배열과 다르게 다음 주소를 알아야함
    4의 크기
    ⇒
    1, 2, 3, 4
    ㅤ
    ↓
    ㅤ
    ㅤ
    추가 5
    ㅤ
     
    notion image

    arraylist

    💡
    배열의 크기를 동적으로 변경 가능
    import java.util.ArrayList; public class ArrayListTest { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("철수"); list.add("영희"); list.add("순신"); list.add("자영"); System.out.println(list.get(3)); list.remove(3); System.out.println(list.get(3)); }
    add 메소드를 호출하여 리스트에 추가 / 삭제 시에는 remove(삭제할 순서의 번호)
     
     
    Share article
    Contents
    배열 (array)정의배열의 초기화for-each 루프2차원 배열linked listarraylist

    from-web-developer

    RSS·Powered by Inblog