* Collection
List : 순차형 집합,
Map : 비정형 집합
Set : 중복은 허용, 순서x
- 자바 프로그램에서 객체를 객체들의 모음 형식으로 관리할 수 있는 방법을 제공하는 클래스들을 컬렉션이라고 부른다.
- 컬렉션은 배열과 유사하지만 데이터를 저장/조회/수정/삭제하는 작업을 쉽게 처리할 수 있으며, 동적인 크기를 갖느나는 장점이 있다.
- 컬렉션 게열은 set/List/Map 등의 인터페이스가 있으며 이를 구현한 클래스를 이용하면 객체들을 모음저장할 수 있다.
* List 컬렉션
-List 컬렉션은 객체를 인덱스로 관리하기 때문에 객체를 저장하면 자동으로 인덱스 번호가 부여되고 인덱스를 통해 객체를 검색, 삭제할 수 있는 기능을 제공합니다.
- List는 객체를 순서대로 저장하며 동일한 객체를 중복 저장할 수 있다.
* List 계열 주요 메서드
1. add(E, e) : 주어진 객체를 List의 맨 끝부분에 추가.
2. add(int index, E, e) : 주어진 인덱스에 객체를 추가
3. set(int index, E, e) : 주어진 인덱스에 저장된 객체를 주어진 객체로 바꿈
- 객체 검색 기능
1. contain(Object o) : 주어진 객체가 저장되어있는지의 여부를 판단.
2. get(int index) : 주어진 인덱스에 저장되어 있는 객체를 리턴.
3. isEmpty() : 컬렉션이 비어있는지의 여부를 판단.
4. size() : 저장되어 있는 전체 객체 수를 리턴.
- 객체 삭제 기능
1. clear() : 저장된 모든 객체를 삭제.
2. remove(int index) : 주어진 인덱스에 저장된 객체를 삭제.
3. remove(Object o) : 주어진 객체를 삭제
package collection.list;
import java.util.*;
public class ArrayListExample {
public static void main(String[] args) {
//ArrayList 객체 생성.
//제네릭(generic) : 타입의 안정화를 위해 객체 내부에 저장되는 타입을
//일치시키는 방법 (1.8 이하 버전은 뒤에도 <>안에 String를 써줘야한다.)
ArrayList<String> list = new ArrayList<>();
String str1 = "Java";
String str2 = "JSP";
System.out.println(list);
//list에 객체를 저장하는 메서드 add() : 데이터를 맨 끝에 추가
list.add(str1);
list.add(str2);
list.add("DataBase");
list.add("JDBC");
list.add("JSP"); //list는 객체의 중복 저장을 허용.
System.out.println(list); // 순서대로 저장된다.
//list에 저장된 총 객체 수 얻기 size()
int size = list.size();
System.out.println("list에 저장된 총 객체 수 " + size);
//list에 객체 삽입 add(index, 객체): 데이터를 해당 인덱스에 삽입.
list.add(2, "Oracle");
System.out.println(list);
// list[3] = "MySQL"; (X) 에러발생 바로 삽입하면 안된다.
//list 데이터 수정 set(index, 객체)
list.set(3, "MySQL");
System.out.println(list);
//list 내부 객체 가져오기 get(index)
String s = list.get(2); // 제네릭에 문자열을 저장했기때문에 문자열로 받음.
System.out.println("2번 인덱스 객체: " + s);
//list에 저장된 객체의 인덱스번호 확인하기 indexOf(객체)
int idx = list.indexOf("MySQL");
System.out.println("MySQL이 저장된 인덱스: " + idx);
//indexOf는 객체를 검색하지 못했을 경우 -1을 리턴합니다.
idx = list.indexOf("안녕~~");
System.out.println(idx);
//list에서 객체데이터 삭제 remove(index), remove(obj)
list.remove(5);
System.out.println(list);
list.remove(str1);
System.out.println(list);
//list내부에 저장된 객체의 유무확인 contains()
System.out.println(list.contains("JSP"));
System.out.println(list.contains(str2));
System.out.println(list.contains("바보야!"));
//list의 반복문 처리
System.out.println("--------------------------");
for(int i=0; i<list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("--------------------------");
for(String str : list) {
System.out.println(str);
}
//list 내부 객체 전체 삭제 clear()
list.clear();
System.out.println(list);
//list내부 데이터가 전부 비어있는지 확인하는 메서드 isEmpty()
if(list.isEmpty()) {
System.out.println("list가 비어있음.");
}else {
System.out.println("list가 비어있지 않음.");
}
}
}
--------------결과-------------
[]
[Java, JSP, DataBase, JDBC, JSP]
list에 저장된 총 객체 수 5
[Java, JSP, Oracle, DataBase, JDBC, JSP]
[Java, JSP, Oracle, MySQL, JDBC, JSP]
2번 인덱스 객체: Oracle
MySQL이 저장된 인덱스: 3
-1
[Java, JSP, Oracle, MySQL, JDBC]
[JSP, Oracle, MySQL, JDBC]
true
true
false
--------------------------
JSP
Oracle
MySQL
JDBC
--------------------------
JSP
Oracle
MySQL
JDBC
[]
list가 비어있음.
추가.
linkedList가 있는데 이것만 조금더 알아보자. ArrayList와 거의 동일하다.
사용법은 똑같다.
List<> list = new ArrayList<>();
List<> list = new LinkedList<>();
그럼 차이는 멀까?
ArrayList는 중간데이터를 삭제 시 뒤에있는 데이터들이 다 앞으로 한칸씩 땡겨온다.
그래서 중간 데이터의 삭제나 삽입이 빈번하게 발생될경우 메모리 속도가 매우 느려진다.
linkedList는 중간 데이터를 삭제하거나 삽입해도 그 자리의 데이터만 삭제되고 줄로 다시 이어지기 때문에 속도가 느려지는 현상은 발생되지 않는다.
'IT' 카테고리의 다른 글
20. 자바 - set, Map 컬렉션 (0) | 2022.10.07 |
---|---|
16-1. 자바 예외처리 - try ~ catch (1) | 2022.10.06 |
18. 자바 - java.util 패키지 (0) | 2022.10.05 |
17-1. 자바 -예외처리 long 패키지 (1) | 2022.10.04 |
14. 자바 - 다형성 (0) | 2022.09.28 |