Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 IT일지

List 컬렉션 본문

프로그래밍 언어/Java

List 컬렉션

세레프 2023. 5. 27. 07:20

 데이터는 자료구조를 통해 의미와 목적을 바탕으로 구분해서 저장한다. 이때, 자료구조 데이터를 구분해서 저장하는 구조로, 데이터를 효율적으로 사용하기 위해서 사용한다. 그리고 자바에서는 자료구조를 사용해서 데이터를 효율적으로 추가, 삭제, 검색 할 수 있도록 컬렉션 인터페이스를 사용방법을 정의했으며, 데이터(요소)를 가지는 객체의 주소를 저장하는 컬렉션 클래스로 java.util 패키지에 구현했다.

 

컬렉션 프레임 워크

상황에 따라서 자료가 어떻게 저장되어야 효율적으로 데이터를 사용할 수 있는지 달라진다. 그래서 상황에 따라 자료를 어떻게 저장하는지 정의할 필요가 있다. 이때, 자료들을 저장할 때, 효율

my-it-diary.tistory.com

 

List 컬렉션

 List 컬렉션 컬렉션 프레임워크에 있는 List 인터페이스를 통해 구현한 클래스로, 데이터를 일렬로 늘어놓은 자료구조이다. 

 

List (Java Platform SE 8 )

An ordered collection (also known as a sequence). The user of this interface has precise control over where in the list each element is inserted. The user can access elements by their integer index (position in the list), and search for elements in the lis

docs.oracle.com

 List 컬렉션의 특징으로는 다음 저장 위치 자료의 주소를 암으로써, 순서대로 객체를 저장하는 위치가 정해진다는 것중복해서 객체를 저장하는 것을 허용한다는 이다. 그래서 List 컬렉션은 배열과 비슷하게 인덱스로 관리가 된다. 하지만 배열과 달리 저장용량이 자동으로 증가한다.

 

List <E> 변수 = new  List컬랙션 클래스() ;

 위의 구조는 List 컬랙션 클래스를 통해 객체를 생성하는 구조로, List 컬렉션의 종류에는 ArrayList, LinkedList이 있다.

 

  List 컬렉션은 List 인터페이스를 통해 구현되어 있기에, 공통적으로 사용할 수 있는 메서드가 있다.

  • add(요소) : 해당 객체를 List 자료구조의 마지막 인덱스 위치에 저장
  • add(인덱스 ,요소) : 해당 객체를 List 자료구조의 해당 인덱스 위치에 저장
  • iterator() : 저장되어 있는 객체를 순회하는 iterator를 생성
  • remove(요소) : 해당 객체를 Set 자료구조에서 삭제
  • size() : Set 자료구조에 저장되어 있는 객체의 수 출력
  • get(인덱스) : 해당 인덱스 위치에 저장되어 있는 객체를 호출
iterator 인터페이스
 iterator 컬렉션 요소에 접근해서 반복적으로 요소에 접근할 수 있도록 도움을 주기 위한 것으로, 인터페이스로 구성되어 있기에 해당 컬렉션 클래스의 iterator메서드를 통해 객체를 생성해야 한다. 
생성
Iterator<E> 변수 = 컬렉션 클래스 객체.iterator();
이때, <E>는 생략이 가능하며, 컬랙션 클래스에 저장되어 있는 요소의 타입에 맞게 타입을 변형해서 생성
메서드
hasNext() : 가져올 요소가 있으면 true, 없으면 false를 출력
next() : 컬렉션에서 하나의 요소를 호출
remove() : 해당 컬렉션 클래스에서 객체를 제거

 

ArrayList

 ArrayList List인터페이스를 통해 구현된 컬렉션 클래스로, 요소를 가지는 객체를 저장하는 위치가 배열 형식으로 관리된다.

 

ArrayList (Java Platform SE 8 )

Resizable-array implementation of the List interface. Implements all optional list operations, and permits all elements, including null. In addition to implementing the List interface, this class provides methods to manipulate the size of the array that is

docs.oracle.com

 즉, ArrayList 0번째 인덱스부터 차례대로 객체를 저장하며, 배열 형식으로 관리하기에, 저장된 객체들은 물리적으로 서로 연결되어 있다.

 

ArrayList<E> 변수 = new ArrayList<E>();

 

 이때, 제너릭 기법인 <E>는 생략이 가능하며, <E>를 생략할 경우에는 add()메서드를 통해 추가되는 객체의 타입에 맞춰서 해당 ArrayList에 저장할 수 있는 타입이 변경된다.

package pack0526;

import java.util.ArrayList;

public class Code2 {

	public static void main(String[] args) {
		ArrayList list = new ArrayList(10); //초기 용량:10
		
		list.add("A");
		list.add("C");
		list.add("E");
		list.add("D");
		System.out.println("초기상태");
		System.out.println(list);
		
		System.out.println("인덱스 1위치에 B추가");
		list.add(1,"B");
		System.out.println(list);
		
		System.out.println("인덱스 2위치에 값 삭제");
		list.remove(2);
		System.out.println(list);
		System.out.println("인덱스 2위치의 값 반환 : "+list.get(2));
		
	}

}

 

 

LinkedList

 LinkedList List인터페이스를 통해 구현된 컬렉션 클래스로, 요소를 가지는 객체를 저장하는 위치가 주소로 링크해서 체인처럼 관리한다.

 

LinkedList (Java Platform SE 8 )

Returns a list-iterator of the elements in this list (in proper sequence), starting at the specified position in the list. Obeys the general contract of List.listIterator(int). The list-iterator is fail-fast: if the list is structurally modified at any tim

docs.oracle.com

 즉, LinkedList 0번째 인덱스부터 차례대로 객체를 저장하며, 저장위치의 주소를 연결하는 형식으로 관리하기에, 저장된 객체들은 논리적으로 서로 연결되어 있다.

 

LinkedList<E> 변수 = new LinkedList<E>();

  위의 구조는 ArrayList형태인 자료구조를 생성하는 구조로, ArrayList클래스는 List인터페이스를 구현하고 있어서 다음과 같은 형식으로도 생성할 수 있다.

List<E> 변수 = new LinkedList<E>();

 이때, 제너릭 기법인 <E>는 생략이 가능하며, <E>를 생략할 경우에는 add()메서드를 통해 추가되는 객체의 타입에 맞춰서 해당 ArrayList에 저장할 수 있는 타입이 변경된다.

package pack0526;

import java.util.LinkedList;

public class Code3 {

	public static void main(String[] args) {
		LinkedList<String> list = new LinkedList<String>();
		
		list.add("A");
		list.add("B");
		list.add("E");
		list.add("D");
		System.out.println("초기상태");
		System.out.println(list);
		
		System.out.println("인덱스 1위치에 B추가");
		list.add(1,"C");
		System.out.println(list);
		
		System.out.println("인덱스 2위치에 값 삭제");
		list.remove(2);
		System.out.println(list);
		System.out.println("인덱스 2위치의 값 반환 : "+list.get(2));
	}

}

'프로그래밍 언어 > Java' 카테고리의 다른 글

Map 컬렉션  (0) 2023.06.18
Queue, Stack  (0) 2023.06.17
Set 컬렉션  (0) 2023.05.26
컬렉션 프레임 워크  (0) 2023.05.25
Format 클래스  (0) 2023.05.24
Comments