ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JAVA Array와 ArrayList
    back-end&DB/Java 2023. 5. 17. 12:27
    728x90

    1. 배열(array)

    같은 타입의 데이터들을 하나로 묶어 다루는 것

    int [] arr = new int[5];
    String [] arr2 = new String[2];

     

     

    1.1 배열의 한계
    배열 선언시 고정된 크기로 선언
    배열의 크기를 바꿀 수 없다.

    String[] arr = new String[2];
    		arr[0] = "A";
    		arr[1] = "B";
    		arr[2] = "C";// << 오류 발생 코드
    		System.out.println(arr[2]);
            
    // Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
    // at ex_01.main(ex_01.java:4)

     

     

    2. ArrayList

    가장 보편적으로 많이 사용하는 컬렉션 클래스로 객체를 저장

    가변리스트, 추가 삭제가 쉽고 길이가 유동적

    데이터 타입은 객체 형태로 작성 (Int = Integer...)

     

    - ArrayList<데이터타입> 변수명 = new ArrayList<데이터타입>();

    import java.util.ArrayList; // << 아래 코드 입력시 자동으로 import 해준다.
    --------------------------------------------------------
    ArrayList<Integer> arrList = new ArrayList<Integer>();

     

     

    2.1 배열과 ArrayList 비교

     

    - 크기 확인 방법

    배열 > length; (속성)

    ArrayList > size(); (메소드)

    int [] arr = new int[5];
    ArrayList<Integer> arrList = new ArrayList<Integer>();
    		
    System.out.println("배열의 크기 : " + arr.length); // 배열의 크기 : 5
    System.out.println("arrList의 크기 : " + arrList.size()); // arrList의 크기 : 0

     

    - 값 입력(추가)

    배열의 경우

    for (int i = 0; i < arr.length; i++) arr[i] = i+1;

     

    ArrayList의 경우

    ArrayList > add(추가할 값); (메소드)

    arrList.add(1);
    arrList.add(2);
    arrList.add(3);
    arrList.add(4);
    arrList.add(5);
    System.out.println("값 추가 후 arrList의 크기 : " + arrList.size()); // 값 추가 후 arrList의 크기 : 5

     

    * 원하는 위치에 값 추가 > add(인덱스 번호, 추가할 값)

    arrList.add(0,6);

     

     

    - 값 조회

    배열의 경우

    for(int i = 0; i < arr.length; i++)
    System.out.println("배열 " + i + "번째 : " + arr[i] );

     

    ArrayList의 경우

    for(int i = 0; i < arrList.size(); i++)
    System.out.println("arrList " + i + "번째 : " + arrList.get(i) );

     

     

    - 값 삭제

     

    배열 : 삭제X

    ArrayList > remove(), clear() 메소드 사용

    remove(인덱스)

    arrList.remove(0);
    for(int i = 0; i < arrList.size(); i++)
    System.out.println("arrList " + i + "번째 : " + arrList.get(i) );
    // 0 번값 삭제후 2 3 4 5 출력

    clear()

    모든 값을 삭제

    arrList.clear();
    System.out.println("clear 후 arrList의 크기 : " + arrList.size()); // 0 출력

     

    - (정리)배열 vs ArrayList

     

    공통점

    인덱스를 활용(0부터 시작) 반복문 활용 가능

    데이터를 여러 개 담을 수 있음

    같은 타입의 데이터만 담을 수 있음

     

    차이점

    크기 : 배열은 고정, ArrayList는 가변 가능

    ArrayList는 메소드를 활용(add, get, remove, clear)

     

    3. 실습

     

    - 문제1) 팀원의 이름을 입력 받고 ArrayList를 활용하여 출력하세요.

     

    이름을 입력하세요 : AAA
    이름을 입력하세요 : BBB
    이름을 입력하세요 : CCC
    이름을 입력하세요 : DDD
    알파벳 팀원은 : AAA BBB CCC DDD 입니다.

    Scanner scan = new Scanner(System.in);
    		ArrayList<String> arrList = new ArrayList<String>();
    
    		for (int i = 0; i < 4; i++) {
    			System.out.print("이름을 입력하세요 : ");
    			String str = scan.next();
    			arrList.add(str);
    		}
    		
    		System.out.print("알파벳 팀원은 : ");
    		for (int i = 0; i < arrList.size(); i++)
    			System.out.print(arrList.get(i) + " ");
    		System.out.println("입니다.");

    - 출력문을 foreach문을 사용해서 출력이 가능하다.

    System.out.print("알파벳 팀원은 : ");
    		arrList.forEach((element) -> {
    		      System.out.print(element);
    		    });
    		System.out.println("입니다.");

    4. 노래 리스트 만들기

    ====== Music paly List ======
    [1] 노래추가 [2] 노래조회 [3] 노래삭제 [4] 종료 >> 1
    =============================
    [1] 원하는 위치에 추가  [2] 마지막 위치에 추가 >> 2
    추가 할 노래 입력 >> AAA
    추가가 완료 했습니다.
    [1] 노래추가 [2] 노래조회 [3] 노래삭제 [4] 종료 >> 2
    ====== 현재 재생 목록 ======
    1. AAA
    [1] 노래추가 [2] 노래조회 [3] 노래삭제 [4] 종료 >> 3
    =============================
    [1] 원하는 위치 삭제  [2] 모든 노래 삭제 >> 2
    모든 노래가 삭제 되었습니다.
    [1] 노래추가 [2] 노래조회 [3] 노래삭제 [4] 종료 >> 4
    프로그램을 종료합니다.

     

    public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		ArrayList<String> musicList = new ArrayList<String>();
    
    		System.out.println("====== Music paly List ======");
    		while (true) {
    
    			System.out.print("[1] 노래추가 [2] 노래조회 [3] 노래삭제 [4] 종료 >> ");
    			int num = sc.nextInt();
    			int index = musicList.size() + 1;
    			if (num == 1) {// 노래 추가
    
    				System.out.println("=============================");
    
    				System.out.print("[1] 원하는 위치에 추가  [2] 마지막 위치에 추가 >> ");
    				num = sc.nextInt();
    				String music;
    				
    				switch (num) {
    				case 1: // 1-1 1번 원하는 위치 추가
    					System.out.print("추가 할 위치 입력 >> ");
    					index = sc.nextInt(); // 원하는 위치 입력
    		
    				case 2: // 1-2 마지막 위치에 추가
    					System.out.print("추가 할 노래 입력 >> ");
    					music = sc.next();
    					musicList.add(index - 1, music); // 사용자 입장에서 1번자리는 1로 시작
    					System.out.println("추가가 완료 했습니다.");
    					break;
    
    				default:
    					System.out.println("잘못 입력하셨습니다.");
    					break;
    				}
    
    			} else if (num == 2) {// 노래조회
    				System.out.println("====== 현재 재생 목록 ======");
    				if (musicList.size() == 0) { // 재생 목록이 없는 경우 출력문
    					System.out.println("재생 목록이 없습니다.");
    				} else {
    					for (int i = 0; i < musicList.size(); i++) { // 사용자 입장에서는 시작은 1
    						System.out.println((i + 1) + ". " + musicList.get(i));
    					}
    				}
    
    			} else if (num == 3) { // 노래삭제
    				System.out.println("=============================");
    				System.out.print("[1] 원하는 위치 삭제  [2] 모든 노래 삭제 >> ");
    				num = sc.nextInt();
    
    				switch (num) {
    				case 1: // 1-1 1번 원하는 위치 삭제
    					System.out.print("삭제 할 위치 입력 >> ");
    					index = sc.nextInt(); // 원하는 위치 입력
    					musicList.remove(index - 1); // 0번 인덱스 1번이라서 -1
    					System.out.println("삭제가 되었습니다.");
    					break;
    
    				case 2: // 2-2 모든 노래 삭제
    					musicList.clear(); // 모든 리스트 삭제
    					System.out.println("모든 노래가 삭제 되었습니다.");
    					break;
    
    				default:
    					System.out.println("잘못 입력하셨습니다.");
    					break;
    				}
    
    			} else if (num == 4) { // 4. 프로그램 종료
    				System.out.println("프로그램을 종료합니다.");
    				break; // while문 종료
    			} else { // 재입력
    				System.out.println("=============================");
    				System.out.println("1번 ~ 4번 번호를 입력하세요");
    
    			}
    		}
    		sc.close();

     

    728x90

    'back-end&DB > Java' 카테고리의 다른 글

    JAVA 생성자와 접근제한자  (0) 2023.05.19
    JAVA 객체 지향 프로그래밍(OOP)  (0) 2023.05.18
    JAVA 메소드  (0) 2023.05.16
    JAVA 2차원 배열  (0) 2023.05.15
    JAVA 배열  (0) 2023.05.12
Designed by Tistory.