기능 : 크기 자동조정, 추가, 수정, 삭제, 반복, 순회, 필터, 포함확인 등
종류
List
: 순서가 있는 데이터의 집합 (데이터 중복 허용) - 배열과 비슷
Queue
: 빨대🥤처럼 한쪽에서 데이터를 넣고 반대쪽에서 데이터를 뺄 수 있는 집합
Set
: 순서가 없는 데이터의 집합 (데이터 중복 허용 안함) - 순서없고 중복없는 배열
Map
: 순서가 없는 (Key,Value) 쌍으로 이루어진 데이터의 집합 (Key값 중복 허용 안함)
순서가 있는 데이터의 집합 => Array(최초 길이를 알아야함)
1) Array -> 정적배열
2) List(ArrayList) -> 동적배열(크기가 가변적으로 늘어난다)
생성 시점에 작은 연속된 공간을 요청해서 참조형 변수를 담아놓는다.
값이 추가될 때 더 큰 공간이 필요하면 더 큰 공간을 받아서 저장하니깐 상관X
값 추가 : intList.add({추가할 값})
값 수정 : intList.set({수정할 순번}, {수정할 값})
값 삭제 : intList.remove({삭제할 순번})
전체 출력 : intList.toString()
형태로 전체 값을 대괄호[]
로 묶어서 출력
전체 제거 : intList.clear()
ArrayList<Integer> intList = new ArrayList<Integer>(); // 선언 + 생성 intList.add(99); intList.add(15); intList.add(3); System.out.println(intList.get(1)); // 99 출력(맨 처음에 추가된 99가 출력)
ArrayList<Integer> intList = new ArrayList<Integer>(); // 선언 + 생성 intList.add(99); intList.add(15); intList.add(3); // 2번째 있는 값(15)를 바꿔보자 intList.set(1,10); // 첫 번째를 10으로 바꾸자 System.out.println(intList.get(0)); // 10 출력
ArrayList<Integer> intList = new ArrayList<Integer>(); // 선언 + 생성 intList.add(99); intList.add(15); intList.add(3); intList.remove(0); // 첫번째 숫자 삭제 System.out.println(intList.get(0)); // 15 출력
첫 번째 인덱스 99가 삭제되고 15가 첫 번째 인덱스가 됨
ArrayList<Integer> intList = new ArrayList<Integer>(); // 선언 + 생성 intList.add(99); intList.add(15); intList.add(3); intList.remove(0); // 0번째거 삭제 System.out.println(intList.get(0)); // 15 출력 System.out.println("클리어 전"); System.out.println(intList.toString()); // [15, 3] 출력 intList.clear(); System.out.println("클리어 후"); System.out.println(intList.toString()); // List 안에 있는 값을 사람이 볼 수 있게 만들어줌 [] 출력
linkedList.add({추가할 값})
linkedList.add({추가할 순번}, {추가할 값})
linkedList.set({수정할 순번}, {수정할 값})
linkedList.remove({삭제할 순번})
linkedList.toString()
형태로 전체 값을 대괄호[]
로 묶어서 출력linkedList.clear()
LinkedList<Integer> linkedList = new LinkedList<Integer>(); linkedList.add(5); linkedList.add(10); linkedList.add(3); System.out.println(linkedList.get(0)); // 5 System.out.println(linkedList.get(1)); // 10 System.out.println(linkedList.get(2)); // 3 System.out.println(linkedList.toString()); // 조회할 때는 arraylist보다 속도가 현저히 느리다. linkedList.add(200); System.out.println(linkedList.toString()); // [5, 10, 3, 200] linkedList.add(2,4); // 2번째 인덱스에 4를 추가 System.out.println(linkedList.toString()); // [5, 10, 4, 3, 200] linkedList.set(1,30); // 첫 번째 인덱스 값을 30으로 바꿔라 System.out.println(linkedList.toString()); // [5, 30, 4, 3, 200] linkedList.remove(1); // 첫 번째 인덱스 삭제 System.out.println(linkedList.toString()); // [5, 4, 3, 200] linkedList.clear(); System.out.println(linkedList.toString()); // [] 출력 } }
intStack.push({추가할 값})
intStack.peek()
맨 위값을 조회intStack.pop()
맨 위값을 꺼냄(꺼내고나면 삭제됨) Stack<Integer> intstack = new Stack<Integer>(); // 선언 및 생성 intstack.push(10); intstack.push(15); intstack.push(1); // 다 지워질 때까지 출력 while (!intstack.isEmpty()) { // intstack이 비어있으면 false, 그게 아니면 true System.out.println(intstack.pop()); // 맨 상단에 있는 것만 pop 위로 빼주면 리턴이 되면서 stack에서 빠지게 됨 } // 1 15 10 순서로 pop intstack.push(10); intstack.push(15); intstack.push(1); // peek System.out.println(intstack.peek()); // 맨 위에 있는 값 1 출력 System.out.println(intstack.size()); // 3 }
()
: Stack이 비어있으면 true, 그게 아니라면 false를 반환