본문 바로가기

JAVA_이클립스

JAVA - Stack Class/ ArrayList Class/ Vecotr Class/ HashSet Class/ HashMap Class/ Queue

Stack Class

● 배열성 클래스

● LIFO 구조 : 먼저 들어온 값이 마지막에 나간다

 

Generic(제네릭)

● 잘못된 타입 들어오는 것 방지

● 변환(cast) 필요없음

 

Stack<타입>변수명 = new Stack<타입>();

타입 선언은 생략가능(색칠한 부분)

타입은 Integer, String, Character 등 여러가지 형태로 선언 가능

 

Stack class의 주요 메서드

 

Stack 값 추가하기 

● push() 메서드를 사용해 값을 추가할 수 있음

 

Stack 값 삭제하기

● pop() 메서드를 사용해 Stack  값에서 삭제

 

Stack 크기 구하기

● size() 메서드를 사용해 Stack안에 있는 값의 개수 출력

 

Stack 값 출력하기

● firstElement : Stack 의 맨 처음 Input한 값을 찾을 수 있음

 

● lastElement(), peek() 메서드를 사용해 Stack의 맨 마지막에 Input한 값을 꺼낼 수 있음

 

Stack 값 검색하기

● contains() : 메서드를 호출하면 값의 여부를 찾아 true, false 반환

 

● indexOf() : 메서드를 호출하면 값을 위치 Index를 반환

 

 

 

ArrayList 클래스

● 선형배열 객체

● 가변배열임

● 인덱스 값이 있다

  리스트 : 데이터를 일렬로 늘어놓은 구조

● 선언 방법 : ArrayList<객체타입> 이름 = new ArrayList<>();

 

 

 

데이터 저장하기

● add메소드를 통해 데이터를 저장함

● 특정 용량을 벗어나 데이터를 추가하는 경우 저장 용량이 늘어나며 데이터가 삽입됨

● 선언방법 : 이름.add("aaa");

 

● 원소를 삽입하고 싶은 경우 인덱스를 인수로 추가(추가된 인덱스 뒤의 원소들은 뒤로 1씩 밀려남)

● 선언방법 : 이름.add(2,"aaab");

 

 

데이터 삭제하기

● remove 메소드를 통해 데이터를 삭제함

● 해당 인덱스의 데이터를 삭제한느 경우 인덱스 뒤의 원소들이 앞으로 1씩 당겨짐

● 전체 삭제는 remove 대신 clear 메소드 사용(모든 원소 삭제)

● 선언방법 : 이름.remove(1);

 

 

특정 인덱스의 리스트 변경

● set 메서드를 통해 변경

● 이름 set(int index, E element) : 첫번째 파라미터는 arrlist의 위치, 즉 인덱스를 뜻하며

두번째 파라미터는 변경할 값을 의미

 

 

원소 참조 및 검색

● get 메서드를 통해 값을 가져옴

● 선언 방법 : public G get(int index)

 

● indexOf 메서드를 통해 특정 데이터의 인덱스를 알 수 있음

● 선언 방법 : public int indexOf(Object o)

 

 

리스트 크기 구하는 법

● arraylist.size 메서드를 통해 리스트 내에 있는 원소의 개수 리턴함

 

 

리스트 비어있는지 확인하는 법

● isEmpty()를 활용해 데이터가 있는지 없는지 확인함

 

리스트를 현재 사이즈로 최적화

● trimToSize()를 통해 현재 리스트 사이즈에 축소해 최적화함

 

LinkedList 클래스

● 데이터를 효율적으로 추가, 삭제, 변경 등 동작을 하기 위해 사용

● ArrayList와 기능은 동일

● 차이점은 다르게 불연속적으로 존재하며, 데이터들은 서로 연결되어 있음

 

 

 

 

Vector(백터 클래스)

ArrayList와 동일

● Thread safe

● ArrayList보단 무겁다

● 객체의 삽입, 삭제, 이동이 쉽다

● 데이터를 저장한 순서를 기억한다. (순서대로 저장)

● 데이터 중복 저장을 허용함

● 다양한 타입의 데이터들을 저장할 수 있음

● 기본형 데이터는 저장할 수 없음

 

ArrayList와 Vector의 차이점

● ArrayList는 Thread-safe하지 않음, Vector은 Thread- safe함. 성능은 ArrayList가 더 좋음

● ArrayList는 Iterator만 사용할 수 있고, Vector은 Enumeration, Iterator 둘다 사용할 수 있음

 

 

HashSet Class

● 데이터 순서가 없음

● 중복값이 들어가지 않음

● 선언방법 : HashSet<데이터타입> 변수명 = new HashSet<데이터타입>();으로 선언

 

값 추가 :add

값 삭제 : remove

값 크기 : size

값 출력 : Iterator

값 검색 : contains

 

HashMap Class

● Map 인터페이스를 구현

● Key 값, Value 값을 쌍으로 저장

● Key 값은 중복 불가

●  선언 방법 : HashMap<타입, 타입>map = new HashMap<>();

 

데이터 삽입 : put 메서드

데이터 가져오는 법 : get() 메서드

 

Iterator 메서드

● Iterator 객체를 리턴함, 반복문으로 데이터를 처리할 때 유용함

● Iterator이 공통적으로 가지고 있는 hasNext() 함수로 null인지 판단해서 while문으로 반복함

● 그리고 데이터를 가져올 수 있는 next()함수로 값을 꺼냄

● next로 꺼낸 값은 key 값

● key 값에 해당하는 value를 가져오려면 get() 함수 사용

 

 

 

 

 

Queue Class

● 배열성 인터페이스

● 선입선출(FIFO) : 먼저 들어온 값이 먼저 나간다.

메서드

값 추가 : add, offer

 

값 삭제 

● poll() : 대기열이 비어있으면 null을 반환

● clear : 초기화

● remove : 대기열이 비어있으면 NoSuchElement 에러 반환

 

값크기 : size

출력 : peek(맨 처음 넣은 값 확인 가능), Iterator 클래스를 사용해 모든 값을 출력

 

 

 

 

 

 

 

* HashMap, HashSet, ArrayList를 주로 사용함