[Collection] List_Vector/Stack

LDH·2021년 3월 16일
0

🛒Collection

목록 보기
3/3
post-thumbnail

🛒 List 컬렉션

  1. 요소의 저장 순서가 유지된다.
  2. 같은 요소의 중복 저장을 허용한다.
  3. 대표적인 List컬렉션 클래스에 속하는 클래스로는 ArrayList, LinkedList, Vector, Stack 가 있다.

🛒 Vector

  1. ArrayList와 동일한 내부구조로 값이 추가되면 자동으로 크기가 조절되며 한자리씩 뒤로 이동한다.
  2. 동기화된 메소드로 구성되어있어 멀티 스레드가 동시에 이 메소드들을 실행할수 없기때문에 안전하게 객체를 추가 할수있다.
  3. 데이터를 순차적으로 저장하기 때문에 가장 뒤에서부터 데이터를 삭제 하거나 삽입하는 경우에 적합하다.

🛒 vector 선언

Vector v = new Vector();//타입 미설정 Object로 선언된다.
Vector<Member> member = new Vector<Member>(); //타입설정 Member객체만 사용가능
Vector<Integer> num1 = new Vector<Integer>(); //타입설정 int타입만 사용가능
Vector<Integer> num2 = new Vector<>(); //new에서 타입 파라미터 생략가능
Vector<Integer> num3 = new Vector<Integer>(10);//초기 용량(capacity)지정
Vector<Integer> num4 = new Vector<Integer>(Arrays.asList(1,2,3)); //초기값 지정

🛒 vector 값 추가/삭제

Vector<Integer> v = new Vector<Integer>(10);//Vector생성

v.add(3); //값 추가
v.add(null); //null값도 add가능
v.add(1,10); //인덱스1에 10 삽입

System.out.println(v.size()); //vector 자료 개수 : 3
System.out.println(v.capacity()); //Vector 물리적크기 : 10

Vector v = new Vector();
Member member = new Member(name,age);
v.add(member);
v.add(new Member("홍길동",17));

v.remove(1); //인덱스 1 제거
v.removeAllElements(); //모든 값 제거
v.clear();  //모든 값 제거

🔎 벡터 초기용량을 10으로 지정해주어 capacity()메서드를 사용해서 출력할수있다.

🛒 vector 값 출력

Vector<Integer> v = new Vector<Integer>(Arrays.asList(1,2,3));//Vector 생성

System.out.println(v.get(0));//인덱스0 값을 출력
				
for(Integer i : v) { //for문을 통한 전체출력
    System.out.println(i);
}

Iterator it = v.iterator(); //Iterator 선언 
while(it.hasNext()){//다음값이 있는지 체크
    System.out.println(it.next()); //값 출력
}

🛒 vector 값 검색

Vector<Integer> v = new Vector<Integer>(Arrays.asList(1,2,3));//Vector 생성

System.out.println(v.contains(2)); //Vector에 2이 있는지 검색 : true
System.out.println(v.indexOf(2)); //2가 있는 index반환 없으면 -1

🛒 Stack

  1. Last In First Out => LIFO 먼저 들어간 자료가 나중에 제일 마지막에 나오는 구조
  2. 인터럽트처리, 수식의 계산, 서브루틴의 복귀 번지 저장 등에 쓰인다.
  3. 그래프의 깊이 우선 탐색(DFS)에서 사용한다.
  4. 재귀적(Recursion) 함수를 호출 할 때 사용한다.

🛒 Stack 선언

Stack v = new Stack();//타입 미설정 Object로 선언된다.
Stack<Member> member = new Stack<Member>(); //타입설정 Member객체만 사용가능
Stack<Integer> num1 = new Stack<Integer>(); //타입설정 int타입만 사용가능
Stack<Integer> num2 = new Stack<>(); //new에서 타입 파라미터 생략가능

🛒 Stack 값 추가/출력/삭제

Stack<Integer> stack = new Stack<>(); //int형 스택 선언
stack.push(1); // stack에 값 1 추가
stack.push(2); // stack에 값 2 추가
stack.push(3); // stack에 값 3 추가

System.out.println(stack.size()); //list 크기 : 3

stack.pop(); // stack의 가장 상단의 값 제거
stack.peek();// stack의 가장 상단의 값 출력

stack.clear(); // stack의 전체 값 제거 (초기화)

🔎 pop()는 값을 꺼내 삭제하고, peek()는 삭제는 하지 않는다!

🛒 Stack 값 출력

Stack<Integer> stack = new Stack<>(); //int형 스택 선언

stack.push(1); //stack에 값 1 추가
stack.push(2); //stack에 값 2 추가

System.out.println(stack.get(0)); //인덱스0 값 출력

for(Integer i : stack) { //for문을 통한 전체출력
    System.out.println(i);
}

Iterator<Integer> iter = stack.iterator(); //Iterator 선언 
while(iter.hasNext()){//다음값이 있는지 체크
    System.out.println(iter.next()); //값 출력
}

🛒 Stack 기타 메서드

Stack<Integer> stack = new Stack<>(); //int형 스택 선언

stack.push(1); //stack에 값 1 추가
stack.push(2); //stack에 값 2 추가

System.out.println(stack.size()); //stack의 크기 출력 : 2
System.out.println(stack.isEmpty()); //stack이 비어있는지 check (비어있다면 true)
System.out.println(stack.contains(1)); //stack에 1이 있는지 check (있다면 true)

profile
💻💻💻

0개의 댓글