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 |