-
JAVA Array와 ArrayListback-end&DB/Java 2023. 5. 17. 12:27728x90
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