Back/JAVA
컬렉션 프레임워크(Collection Framework) - ArrayList★★★★★
시월해
2021. 3. 17. 17:09
* 컬렉션 프레임워크
- 컬렉션의 사전적 의미 : 수집해서 모으다, 저장한다는 의미.
- 자바에서 컬렉션은 데이터의 추가, 수정, 삭제, 검색 등을 효과적으로 제공해주는 자료 구조 관련 클래스
==> 값을 담을 수 있는 그릇을 의미함(컨테이너 개념).
- 컬렉션 프레임워크
1) 컬렉션 클래스를 표준화하여 설계해 놓은 인터페이스.
2) List 계열, Set 계열, Map 계열
* List 계열의 컬렉션 프레임워크의 특징
- 자료의 순서가 보장(index) : 정렬 기능 제공
- 중복 데이터 허용.
- List 인터페이스의 자식 클래스로 구현
==> ArrayList(자주), LinkedList(가끔), Vector(가끔)
- 특히 DB의 데이터를 레코드 단위로 저장하거나 저장된 데이터를 가져올 경우 많이 사용 됨.
예제1)
public class Ex01 {
public static void main(String[] args) {
// 배열 객체 생성
String[] str = {"홍길동", "이순신", "유관순", "홍길동"};
for(String k : str) {
System.out.println("str 배열 요소 >>> " + k);
}
System.out.println();
// ArrayList 객체 생성
ArrayList<String> list = new ArrayList<String>();
// 1. add("값") : 데이터를 추가하는 메서드
list.add("홍길동");
list.add("이순신");
list.add("유관순"); // 중복데이터
list.add("김유신");
list.add("김연아");
list.add("유관순"); // 중복데이터
// 2. size() : 데이터의 크기를 반환하는 메서드.
System.out.println("list의 크기 >>> " + list.size());
System.out.println();
// 3. get(index) : list에 저장되어 있는 데이터를 출력하는 메서드.
System.out.println("세번째 인덱스 >>> " + list.get(3));
System.out.println();
// list에 있는 전체 요소를 화면에 출력해 보자.
for(int i=0; i<list.size(); i++) {
System.out.println("list["+i+"] >>> "+list.get(i));
}
System.out.println();
// 4. clear() : 모든 요소를 제거하는 메서드.
list.clear();
System.out.println("list의 크기 >>> " + list.size());
System.out.println();
// 데이터 다시 추가
list.add("홍길동");
list.add("이순신");
list.add("유관순"); // 중복데이터
list.add("김유신");
list.add("김연아");
list.add("유관순"); // 중복데이터
// 5. remove(index) : list의 특정 요소(index)를 삭제하는 메서드.
// 다음 index부터 index값이 한 칸씩 앞당겨진다.
list.remove(2);
for(int i=0; i<list.size(); i++) {
System.out.println("list["+i+"] >>> "+list.get(i));
}
System.out.println();
// 6. add(index, element(값)) : list의 특정 index에 특정 데이터를 추가하는 메서드.
// 해당 index에 추가가 되고, 기존에 있던 데이터들은 뒤로 한 index씩 밀려난다.
list.add(2, "세종대왕");
for(int i=0; i<list.size(); i++) {
System.out.println("list["+i+"] >>> "+list.get(i));
}
System.out.println();
}
}
예제2) Iterator를 사용하여 출력
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Ex02 {
public static void main(String[] args) {
// 다형성 : 부모의 참조변수를 이용해서 자식 객체를 생성하는 방법
// List를 상속 받은 ArrayList
List<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("three");
list.add("four");
list.add("five");
// Iterator
// 자바의 컬렉션 프레임워크에서 컬렉션에 저장되어 있는
// 요소들을 읽어오는 방법을 표준화 해놓은 객체
Iterator<String> it = list.iterator();
// hasNext() : 읽어올 요소가 있는 지 확인하는 메서드. - boolean형
// 가져올 값이 있으면 true 값 반환, 없으면 false 값 반환.
while(it.hasNext()) {
// next() : 다음 요소를 가져오는 메서드
System.out.println(it.next());
}
}
}
예제3) 객체를 제너릭으로 하는 ArrayList
public class MemberDTO {
// 만약 DB상의 테이블의 이름이 member(회원 테이블)이라고 가정했을 때
// member 테이블의 구성(컬럼)이 id, pwd, name, age, address
// 로 구성되었다고 가정을 하면
// 멤버변수
private String id, pwd, name, address;
private int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import model.MemberDTO;
public class Ex04 {
public static void main(String[] args) {
List<MemberDTO> list = new ArrayList<MemberDTO>();
Scanner sc = new Scanner(System.in);
System.out.print("회원 수를 입력하세요. : ");
int count = sc.nextInt();
// 1. 키보드로 회원의 수만큼 회원 정보를 입력 받아서 list에 저장해보자.
for(int i=0; i<count; i++) {
MemberDTO dto = new MemberDTO();
System.out.println((i+1)+"번째 회원의 "
+"아이디, 비밀번호, 이름, 나이, 주소를 입력하세요...");
dto.setId(sc.next());
dto.setPwd(sc.next());
dto.setName(sc.next());
dto.setAge(sc.nextInt());
dto.setAddress(sc.next());
// 생성된 dto 객체의 '주소값'을 ArrayList에 차례대로 저장한다.
list.add(dto);
System.out.println("::::::::::::::::::::::::::::::::::::::");
}
System.out.println("아이디\t비밀번호\t이 름\t나 이\t주 소");
// list에 있는 데이터들을 화면에 출력해보자.
for(int i=0; i<list.size(); i++) {
// list에 저장되어있는 '주소값'을 받을 객체
MemberDTO dto = list.get(i);
System.out.println(dto.getId()+"\t"
+dto.getPwd()+"\t"
+dto.getName()+"\t"
+dto.getAge()+"\t"
+dto.getAddress());
System.out.println("=======================================");
}
sc.close();
}
}