본문 바로가기
JAVA

Test167.java / 컬렉션 프레임워크(Collection Framework) / List (ArrayList)

by universedevelope 2022. 10. 29.
/* ========================================================================
	    ■■■ 컬렉션 프레임워크(Collection Framework) ■■■
=========================================================================*/

// List → Vector, ArrayList, ...
// ㆍ순서 있음
// ㆍ배열과 유사
// ㆍ중복 허용

/*
○ ArrayList 클래스
   
   - ArrayList 와 Vector 클래스는
     List 를 크기 변경이 가능한 배열로 구현한 것으로
	 차이점은 Vector 클래스의 객체는 기본적으로 동기화 되지만,
	 ArrayList는 그렇지 않다는 점이다.

   - 비동기화 컬렉션은 동기화 컬렉션보다 더 나은 성능을 제공하며
     스레드들이 컬렉션을 공유하지 않는 프로그램에서는
	 일반적으로 ArrayList를 Vector보다 더 선호하며,
	 ArrayList는 동기화를 고려하지 않은 Vector 처럼 동작함으로써
	 스레드 동기화에 따르는 부담을 가지지 않기 때문에
	 Vector 보다 더 빠르게 실행된다.

   - null 을 포함한 모든 요소를 허용하며
     List 인터페이스를 구현하는 것 외에 리스트에 격납하기 위해
	 내부적으로 사용되는 배열의 사이즈를 조작하는 메소드를 제공한다.

*/

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class Test167
{
	public static void main(String[] args)
	{
		// ArrayList 자료구조 인스턴스 생성
		// ↓ 전부 다 가능
		//ArrayList<String> list = new ArrayList<String>();
		//Vector<String> list = new Vector<String>();
		//List<String> list = new Vector<String>();
		List<String> list1 = new ArrayList<String>();

		// list1 자료구조에 요소 추가 → add()
		list1.add("쇼생크탈출");
		list1.add("스파이더맨");
		list1.add("인셉션");



		// ArrayList 인스턴스 생성
		List<String> list2 = new ArrayList<String>(list1);

		// list2에 요소 추가
		list2.add("어바웃타임");



		List<String> list3 = new ArrayList<String>();
		
		list3.addAll(list2);


		// "스파이더맨" 앞에 "레미제라블" 추가
		// ① "스파이더맨" 찾기 → indexOf() → 위치값 인덱스 반환
		int n = list3.indexOf("스파이더맨");

		// 테스트
		System.out.println(n);
		// 1

		// ② "스파이더맨" 찾은 인덱스 위치에 "레미제라블" 삽입 → add()
		list3.add(n, "레미제라블");






		// 출력 → 더미 데이터 확인
		System.out.println("========================");
		System.out.println(list1);
		// [쇼생크탈출, 스파이더맨, 인셉션]
		System.out.println(list2);
		// [쇼생크탈출, 스파이더맨, 인셉션, 어바웃타임]
		System.out.println(list3);
		// [쇼생크탈출, 레미제라블, 스파이더맨, 인셉션, 어바웃타임]

		System.out.println("========================");
		System.out.println();

		ListIterator<String> li = list3.listIterator();

		while (li.hasNext())
		{
			System.out.print(li.next() + " ");
		}
		System.out.println();
		// 쇼생크탈출 레미제라블 스파이더맨 인셉션 어바웃타임

		// 출력 → 역순으로 접근
		while (li.hasPrevious())
		{
			System.out.print(li.previous() + " ");
		}
		System.out.println();
		// 어바웃타임 인셉션 스파이더맨 레미제라블 쇼생크탈출
		

	}
}
728x90

댓글