JAVA

컬렉션 프레임웍 List

연93 2022. 9. 27. 23:12

https://www.youtube.com/watch?v=_2e-cgwMOyc&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=121

ArrayList

  • 기존의 vector를 개선한 것으로 구현원리와 기능적으로 동일
  • vector는 자체적으로 동기화 처리가 되어 있다
  • List인터페이스를 구현하므로, 저장순서가 유지되고 중복을 허용한다.
  • 테이터의 저장공간으로 배열을 사용한다.(배열기반)

ArrayList의 메서드

ArrayList()                    기본 생성자
ArrayList(Collection c)        매개변수로 어떠한 컬렉션을 주면 컬렉션을 저장하는 ArrayList
ArrayList(int initialCapacity) 배열의 길이

예제

package sec02.exam01_arraylist;

import java.util.ArrayList;
import java.util.List;

public class ArrayListExample {

	public static void main(String[] args) {
		//List컬렉션 ? 특징 - 인덱스관리, 중복허용
		
		//1)ArrayList클래스
		
		List<String> list = new ArrayList<String>();
		
		// 데이터 저장하기
		list.add("Java");  // 인덱스 0번 저장
		list.add("JDBC");  // 인덱스 1번 저장
		list.add("Servlet/JSP");  // 인덱스 2번 저장 -> 3번
		list.add(2, "DataBase"); // 인덱스 2에 삽입.
		list.add("MyBatis"); // 인덱스 4번 저장
		//중복허용
		//list.add("MyBatis");
		
		int size = list.size();
		System.out.println("총 객체수: " + size); // 5
		System.out.println();
		
		//데이터 읽어오기
		String skill = list.get(2);
		System.out.println("인덱스 번 2: " + skill); // DataBase
		System.out.println();
		
		//컬렉션의 모든 정보를 읽어오기. i는 0~4
		for(int i=0; i<list.size(); i++) {
			String str = list.get(i);
			System.out.println(i + ": " + str);
		}
		System.out.println();
		
		//컬렉션 요소(개별기억장소) 인덱스 제거
		list.remove(2); // 실제 3번째 데이타위치 제거
		list.remove(2);
		
		//컬렉션 요소를 값으로 제거
		list.remove("MyBatis");
		
		//컬렉션의 모든 정보를 읽어오기. i는 0~1
		for(int i=0; i<list.size(); i++) {
			String str = list.get(i);
			System.out.println(i + ": " + str);
		}

	}

}
package sec02.exam01_arraylist;

import java.util.Arrays;
import java.util.List;

public class ArraysAsListExample {

	public static void main(String[] args) {
		// Arrays 클래스 : 배열기능을 지원하는 목적으로 제공.
		List<String> list1 = Arrays.asList("홍길동", "신용관", "감자바");
		//향상된 for문. 배열 또는 컬렉션 사용가능
		for(String name : list1) {
			System.out.println(name);
		}
		List<Integer> list2 = Arrays.asList(1, 2, 3);
		for(int value : list2) {
			System.out.println(value);
		}

	}

}
package sec02.exam03_linkedlist;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

// 데이타 삽입, 삭제시 ArrayList보다 LinkedList가 더 성능이 좋다.
// 순차적으로 추가/삭제 : ArrayList > LinkedList
// 중간에 추가/삭제 : ArrayList < LinkedList
// 검색 : ArrayList > LinkedList

public class LinkedListExample {

	public static void main(String[] args) {
		List<String> list1 = new ArrayList<String>();
		List<String> list2 = new LinkedList<String>();
		
		long startTime;
		long endTime;
		
		//ArrayList클래스 작업
		startTime = System.nanoTime();
		for(int i=0; i<10000; i++) {
			list1.add(0, String.valueOf(i)); // "0" 삽입.  뒤로 밀리는 작업발생.
		}
		endTime = System.nanoTime();
		System.out.println("ArrayList 작업시간: " + (endTime-startTime) + " ns");
		
		
		//LinkedList클래스 작업
		startTime = System.nanoTime();
		for(int i=0; i<10000; i++) {
			list2.add(0, String.valueOf(i)); // "0" 삽입
		}
		endTime = System.nanoTime();
		System.out.println("LinkedList 작업시간: " + (endTime-startTime) + " ns");
		
	}

}

'JAVA' 카테고리의 다른 글

제네릭 타입  (0) 2022.09.29
자료구조 Queue 예제  (1) 2022.09.29
컬렉션 프레임웍(collection framework)  (0) 2022.09.27
객체지향 추상 클래스, 추상 메서드  (0) 2022.09.26
객체지향 매개변수의 다형성 예제  (0) 2022.09.26