컬렉션 프레임워크
배열은 한번 생성하면 크기를 바꾸기 어렵다는 불편함을 해결하기 위해
필요한 자료구조(데이터를 보관하는방법, 데이터를 활용하는 기능)를 미리 구현하여 컬렉션 프레임워크를 제공한다.
기존의 List(배열의 상위호환), Queue(대기열, 선입선출), Tree(구조도) 등의 자료구조를 인터페이스화 시켜서 묶어놓은 개념이다.
즉, 컬렉션 프레임워크란?
기존에 존재했던 자료구조에 인터페이스로 설계된 기능을 클래스를 통해 제공하여 관리에 용이한 자료구조를 구조화한 것!
ArrayList
List 인터페이스를 구현한 클래스 중 가장 많이 사용되는 클래스
내부적으로는 배열을 이용해 구현되어 배열과 호환성이 좋은 자료구조
데이터의 조회, 추가, 삭제, 수정이 가능하고 중복을 허용
index가 존재⭐중요!⭐
ArrayList<Integer> list = new ArrayList<>(); //제네릭타입 지정한 것만 가능 (여기서는 정수)
//리스트에 요소 추가하기
list.add(10);
list.add(20);
list.add(50);
System.out.println(list);
//리스트의 요소의 개수 확인하기
System.out.println("list의 요소의 개수 : "+list.size());
//리스트의 요소 하나 꺼내오기
int res = list.get(2);
System.out.println("list[2] : "+res);
//리스트 중간에 요소 추가하기
list.add(1, 33);
System.out.println(list);
//리스트의 요소 수정하기
list.set(2, 70);
System.out.println(list);
//리스트의 요소 제거하기
list.remove(0);
System.out.println(list); //인덱스번호가 당겨짐
//리스트의 모든요소 제거하기
list.clear();//자료형 void. 삭제후 아무것도 반환하지않음
System.out.println(list);
++) list.removeAll(list);
//자료형이 boolean. 리스트의 모든 요소를 삭제하고 결과가 필요한 경우 사용. 잘 삭제되면 true를, 아니면 false반환. 출력문 안에 넣어서 쓴다.

ArrayList 심화
Integer, String 등 외에 직접만든 객체도 쓸 수 있다.
여러가지 정보가 들어있는 객체를 ArrayList에 저장할 수 있는 것이 중요포인트⭐⭐
1️⃣아이디를 계속 추가하는 코드 작성하기
아이디생성 : abc
abc
아이디생성 : abc
중복된 아이디입니다.
아이디생성 : abc2
abc abc2
아이디생성 :
...
ArrayList<String> list = new ArrayList<>();
Scanner sc = new Scanner(System.in);
label : while (true) {
System.out.print("아이디생성 : ");
String id = sc.next();
// 중복아이디 검증
for (int i = 0; i < list.size(); i++) {
if (id.equals(list.get(i))) {
System.out.println("중복된 아이디입니다.");
continue label;
}
}
// 리스트에 추가✨
list.add(id);
// 출력(정석for문)
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + " ");
}
// (향상된for문)
// for(String i : list) {
// System.out.println(i);
// }
System.out.println();
}
2️⃣고객의 인적사항을 추가,삭제,조회하는 기능을 구현해보자
조건 ①기능은 PersonManager 클래스로 만들고 ②메서드이름은 PersonMgr()이고 ③호출은 PersonMain클래에서만 한다.
예시)
1. 정보추가
2. 정보삭제
3. 정보조회
4. 종료
항목선택: 1
===정보추가===
이름 :
나이 :
번호 :
정보가 저장되었습니다.
1. 정보추가
2. 정보삭제
3. 정보조회
4. 종료
항목선택: 3
===정보조회===
등록인원 총 0명
이름
나이
번호
--------------------
이름
나이
번호
...

접근제한자를 private으로 설정해서 getter와 setter를 받는다.
Main클래스는 호출만 가능하도록 PersonManager 클래스의 객체를 미리 만들어둔다.
'JAVA' 카테고리의 다른 글
[JAVA] 컬렉션 프레임워크 _ 반복자(Iterator), 정렬 (0) | 2023.09.01 |
---|---|
[JAVA] 컬렉션 프레임워크 _ Set컬렉션(HashSet, TreeSet) (0) | 2023.09.01 |
[JAVA] 제네릭(Generic) (0) | 2023.08.30 |
[JAVA] 예외 던지기, 임의의 예외처리, 사용자정의 예외처리 (0) | 2023.08.30 |
[JAVA] try-catch 구문 (0) | 2023.08.29 |