Collection

정의
참조형 데이터를 저장하는 '저장소' 객체
자료구조 : 가변배열

 

종류
List : 순서보존 O, 중복허용 O ,
자료형 : ArrayList, LinkedList
Set : 순서보존 X, 중복허용X, 정렬을 해줌, 크기제한 X, (쓸일 거의 없다) 옵션..
자료형 : TreeSet

 

ArrayList

List 인터페이스를 상속받아 데이터의 저장 순서가 유지되고 중복을 허용
크기가 가변적이고, 선형구조를 가지고 있다.
ArrayList 사용 시 import문을 작성해 주어야 한다.

선형구조 : O-O-O-O-O-O
삭제 후 정리, 검색 속도가 빠르다.

 

LinkedList

배열은 가장 기본적인 형태의 자료구조로 구조가 간단하다
LinkedList사용 시 import문을 작성해 주어야 한다.

장점
사용하기 쉽고 데이터를 읽어오는데 걸리는 시간이 가장 빠르다.

단점
크기를 변경할 수 없다.
비순차적인 데이터의 추가 또는 삭제에 시간이 많이 걸린다.


ArrayList에 어떠한 클래스 든 다 저장하고 싶은 경우

참조
ArrayList에 넣고 싶은 자료형에 따라 Generic에 Class를 넣어줘야하는데, Generic에 Object로 넣을 경우
모든 데이터 타입을 다 집어 넣을 수 있게 된다.

 

예시

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

public class Array_Linked {
	public static void main(String[] args) {

		ArrayList<Object> arraylist = new ArrayList<Object>();
	}
}

 

 

add(요소) : ArrayList 요소 추가

		// 추가
		arraylist.add("red");

		String str = new String("blue");
		arraylist.add(str);

		arraylist.add(new String("green"));



add(index, 요소) : ArrayList 원하는 위치에 요소 추가

 		// 원하는 위치에 추가(중간)
		String num = new String("yellow");
		arraylist.add(1, num);

		arraylist.add(1, "yellow");

 

set(index, 요소) : ArrayList 원하는 위치에 요소 수정

		// arraylist 수정
		arraylist.set(2, "black");

 

remove(index) : ArrayList 원하는 위치에 요소 삭제

		// 0번째 삭제
		arraylist.remove(0);

 

indexOf(검색 요소) : ArrayList index번호 검색

		// yellow의 index의 번호
		int index = arraylist.indexOf("yellow");

 

size() : ArrayList 길이

		// arraylist 길이
		int len = arraylist.size();

 

ArrayList 전체 출력

		// foreach문 사용	
		System.out.println("arraylist");
		for (Object ob1 : arraylist) {
			System.out.print((String) ob1+"\t");
		}

 

LinkedList에 ArrayList 복제하기

참조
LinkedList는 ArrayList와 호환 가능하다.
원본(arraylist)에 영향을 주지 않습니다.

형식
LinkedList <자료형> linklist = new LinkedList <자료형>(arraylist명);

예시

		// ArrayList와 호환 가능!
		// Generic은 같은형으로 잡아주고 생성자 안에 ArrayList명을 넣어준다.

		LinkedList<Object> linklist = new LinkedList<Object>(arraylist);



addLast(요소) : linklist 맨뒤에 요소 추가 / addFirst(요소) : 맨 앞에 요소 추가

참조
 ArrayList는 index를 지정하여 요소를 추가할 순 있지만 linklist처럼 맨 앞이나 맨뒤에 요소를 추가할 수 없다.

예시

 		// 맨 뒤에 요소(element)를 추가
		linklist.addLast("sleap");
		
		// 맨 앞에 요소(element)를 추가
		linklist.addFirst(1);




위 코드의 전체 코드입니다.

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

public class Array_Linked {
	public static void main(String[] args) {

		ArrayList<Object> arraylist = new ArrayList<Object>();

		// 추가
		arraylist.add("red");

		String str = new String("blue");
		arraylist.add(str);

		arraylist.add(new String("green"));

		// 원하는 위치에 추가(중간)
		String num = new String("yellow");
		arraylist.add(1, num);

		arraylist.add(1, "yellow");

		// foreach문 사용	
		System.out.println("arraylist");
		for (Object ob1 : arraylist) {
			System.out.print((String) ob1+"\t");
		}
		System.out.println();
		System.out.println();
		// 삭제
		// 0번째 삭제
		arraylist.remove(0);

		// 검색
		// yellow의 index의 번호
		int index = arraylist.indexOf("yellow");



		// ArrayList와 호환 가능!
		// Generic은 같은형으로 잡아주고 생성자 안에 ArrayList명을 넣어준다.

		LinkedList<Object> linklist = new LinkedList<Object>(arraylist);

		// linklist 전체 출력문
		System.out.println("linklist");
		for (Object ob : linklist) {
			System.out.print((String) ob+"\t");
		}
		System.out.println();
		System.out.println();
		
		// 맨 뒤에 요소(element)를 추가
		linklist.addLast("sleap");
		
		// 맨 앞에 요소(element)를 추가
		linklist.addFirst(1);
		
		// arraylist 수정
		arraylist.set(2, "black");
		
		// arraylist 길이
		int len = arraylist.size();
		
		// arraylist 전체 출력문
		System.out.println("linklist에 요소 추가 후 arraylist");
		for (Object ob1 : arraylist) {
			System.out.print((String) ob1+"\t");
		}
		System.out.println();
		System.out.println();
		
		// linklist 전체 출력문
		System.out.println("요소 추가 후 linklist");
		for (Object ob : linklist) {
			System.out.print((Object) ob+"\t");
		}
	}
}



실행화면

arraylist
red	yellow	yellow	blue	green	

linklist
yellow	yellow	blue	green	

linklist에 요소 추가 후 arraylist
yellow	yellow	black	green	

요소 추가 후 linklist
1	yellow	yellow	blue	green	sleap

 

'IT > Java' 카테고리의 다른 글

JAVA 용어정리  (0) 2021.09.16
[자바] jsoup을 이용하여 웹 크롤링 구현하기  (0) 2021.07.20
[자바] 상속/오버라이딩  (0) 2021.06.01
[자바] 싱글톤(Sington)  (0) 2021.05.31
[자바] 파일 쓰기  (0) 2021.05.26

+ Recent posts