배열리스트, 배열 목록
리스트처럼 연결되어 있는 배열이다.
기존 자바의 배열하고 조금 다른 배열이 된다.
ArrayList는 컬렉션의 List이다.
ArrayList는 Collection(컬렉션)에서 List라고 하는 인터페이스 클래스를 이용하여 구현 한 것이다.
--> List list1 = new ArrayList();
ArrayList는 배열에서 쓰이는 "데이터 추가, 삭제, 변경"과 동일한 방식을 사용한다.
그림과 같이 마지막 위치에 데이터를 추가 하게 되면, 마지막 위치에 데이터를 저장하게 되고
데이터를 삭제하게 되면, 데이터가 사라지게 된다.
특정 위치에 데이터 추가도 가능
위 그림처럼 2번 위치에 데이터를 추가를 하면, 그 이후에 데이터들은 한 칸씩 밀리게 되고
그 위치에 새 데이터가 들어가게 된다.
반대로 2번 위치에 데이터를 삭제하게 되면, 그 이후의 데이터들은 한칸 씩 앞으로 당겨지게 된다.
배열과는 다르게 유용하게 쓰이는 점이 많다.
1 - 크기 지정
배열의 경우 int arr[] = new int[5];
이런식으로 배열의 크기를 지정하고, 배열의 크기를 넘어서게 되면 오류가 발생하게 된다.
위와 같은 경우 ArrayList는 Integer만 넣을 수 있께 되지만,
import java.util.ArrayList;
ArrayList arraylist = new ArrayList();
이렇게 선언이 되면, Object를 상속하는 모든 것을 넣을 수 있게 된다.
첫번 째 요소는 Integer 형식의 데이터를 넣고, 두번 째 요소는 String 형식의 데이터, 세번 째 요소는 Double 형식의
데이터를 넣는 것이 가능하다.
ArrayList
ArrayList<Wrapper클래스> arrayList = new ArrayList<>();
ArrayList arraylist = new ArrayList();
첫번 째 방식을 사용하는 것이 좋다. 여러 형태의 객체를 넣어야겠다고 할 땐, 따로 클래스를 정의하여
그 클래스를 제네릭에 대입하여 사용 권장
ArrayList 주요 메소드
E --> ArrayList를 선언할 때, 제네릭에 사용한 Wrapper 클래스
ArrayList는 추가, 제거할 때 이후, 또는 이전의 데이터를 밀고 당긴다.
7개의 데이터가 들어가 있는 ArrayList에 1개의 데이터를 특정 위치에 추가하려면저런 연산을 하게 된다. 그런 이유에서 데이터 추가, 제거에는 비효율 적이다.
but, 데이터 검색에는 최적이다.
ArrayList 사용 예제
import java.util.ArrayList;
import java.util.Scanner;
public class C01ArrayList {
public static void main(String[] args) {
int num = 0;
Scanner input = new Scanner(System.in);
ArrayList<String> list = new ArrayList<>();
while(true) {
System.out.println("========M E N U==========");
System.out.println("1 이름 등록");
System.out.println("2 이름 조회");
System.out.println("3 이름 삭제");
System.out.println("4 전체 조회");
System.out.println("5 종료");
System.out.println("========M E N U==========");
System.out.print("번호 : ");
num = input.nextInt();
switch (num) {
case 1:
System.out.println("이름 등록 메뉴 입니다");
String add = input.next();
list.add(add);
break;
case 2:
System.out.print("조회 할 이름을 입력하세요 : ");
String name = input.next();
if(list.contains(name)) {
System.out.println("등록 되어 있는 이름입니다.");
}else{
System.out.println("등록 되어 있지 않은 이름입니다.");
}
break;
case 3:
System.out.print("삭제 할 이름을 입력하세요 : ");
String remove = input.next();
if(list.remove(remove)) {
System.out.println("삭제 완료");
}else {
System.out.println("삭제 실패");
break;
case 4:
System.out.println("전체 조회 메뉴 입니다");
if(list.isEmpty()) {
System.out.println("조회할 목록이 없습니다.");
}else {
for (String re : list) {
System.out.println(re);
}
}
break;
case 5:
System.exit(-1);
default:
System.out.println("다시 입력...");
}
}
}
}
리스트에 이름을 저장하고
검색, 삭제, 조회 기능을 추가했다.
'Backend > JAVA' 카테고리의 다른 글
[JAVA] Vector, 동적 배열 자료구조 (0) | 2022.03.08 |
---|---|
[JAVA] LinkedList (0) | 2022.03.07 |
[JAVA] GUI 이벤트 구동 프로그래밍 (0) | 2022.03.04 |
[JAVA] Generic (0) | 2022.03.04 |
[JAVA] 배치 관리자(Layout manager) (0) | 2022.03.02 |