배열

Dec 15, 2023
배열

배열 (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

from-web-developer