단단히

컬렉션 프레임워크_List 본문

Java/개념 정리

컬렉션 프레임워크_List

이게아닌데 2022. 6. 30. 13:33

 <지난 개념 정리>

[컬렉션 프레임워크(Collection Framework / C.F.)의 개념]

 

여러 개의 변수(Data)를 만들고 관리해야 할 때, 배열은 좋은 방법이다.

그러나 배열은 구조적 단점이 있는데, 배열은 지정된 크기가 필요하고 연속적인 구조를 가져야 한다.(> 선형 구조 자료)

이후 배열의 단점을 개선할 수 있는 배열 자료구조를 만들었다.

우선 java.util 패키지에 Collection이라는 인터페이스를 만들었고 Collection을 상속받는 List 인터페이스를 만들었다. 이어 List 인터페이스를 구현한 클래스를 3개 만들었는데, Vector, ArrayList, LinkedList이다.

Collection 인터페이스를 최상위 슈퍼 인터페이스로 만들고 배열 자료형을 참조하는 인터페이스와 이를 구현한 클래스의 체계(Framework)가 컬렉션 프레임워크(Collection Framework)이다.

 

[컬렉션 프레임워크 특징]

  • 크기 변동
  • 역 속 또는 비연속 구조
  • 참조 자료형만 배열 요소로 가능

[List]

List는 일렬로 늘어놓은 구조를 가지고 있다. 인덱스로 관리하기에 자동으로 들어와 늘 순서로 인덱스가 부여된다. 이 인덱스로 삭제, 검색을 할 수 있다. List Collection은 참조 클래스이므로 주소를 참조한다.

만약 동일한 객체를 저장한다면 동일한 주소가 참조된다.

참고) null값도 저장이 가능하다(이때 인덱스는 주소를 참조하지 않는다.)

List 인터페이스는 <제네릭> 타입이다. 그래서 메서드의 매개 변수 타입과 리턴 타입에 E라는 타입 파라미터가 있다.

객체 추가는 add() 메서드를 사용한다.

객체를 가져올 때는 get()을 사용한다.

List<Integer> list = new List<>();

list.add("강아지");  //객체 추가

int listSize = list.size();
System.out.print(listSize); 					//list길이 출력

boolrean isContrains = list.contrains("고양이")			 // '고양이'객체가 있는지 확인
int catIndex = list.indexOf("고양이"); 				 //'고양이'객체 인덱스찾기
//만약 객체 인덱스가 없으면 -1을 출력함.

list.add(1,"고양이"); 						 // 1인덱스에 객체 추가
list.add("사자");
list.add(3,"호랑이");

String an = list.get(2); 						// index 2  객체 찾기
list.set(2,"코끼리"); 							// index 2 의 값을 '코끼리'로 변경

if(list.isEmpty()){
	System.out.print("실행문이 실행된다면 list는 Empty 상태이다.")
}

list.remove(0); //해당 인덱스 삭제
list.remove("코끼리");							 //'코끼리' 객체 삭제

list.clear(); 								//모든 객체 삭제

참고)

clear()과 removeAll()의 차이

clear()은 기본 배열을 거치고 각 항목을 null로 설정시킨다.

removeAll()은 모든 요소를 반드시 삭제하는 것이 아니라 매개변수로 제공된 요소만 삭제한다.

그래서 removeAll(collention) 컬렉션이나 컬렉션이 있는지 확인하는 ArrayList를 거치게 된다.

시간 복잡성

 ArrayList.clear()  >> O(n)

removeAll() >>  O(n^2)

 

따라서 clear()가 removeAll() 보다 더 빠르다.

 

 

전체 객체 대상으로 반복문을 통해 객체 얻기

- for문 사용

List<String> list = new List<>();

for(int i=0; i > list.size(); i++) {
	String str = list.get(i);
}

- 향상된 for문 사용

for(String str : list) {
// list에 저장된 객체수만큼 루프문이 된다.
}

 

'Java > 개념 정리' 카테고리의 다른 글

컬렉션 프레임워크( Collection Framework / C.F)_List.Vocter  (0) 2022.07.13
빈(Bean) 클래스_ Getter와 Setter  (0) 2022.07.10
컬렉션 프레임워크  (0) 2022.06.20
배열 _ 다차원 배열  (0) 2022.06.15
인터페이스  (0) 2022.06.13
Comments