본문 바로가기
  • soobinhand의 기술 블로그
Computer Science/자료구조

[자료구조] JAVA로 구현해보는 자료구조

by soobinhand 2021. 11. 15.
728x90

Array

//초기 크기 설정 후, for문으로 값 넣기
int[] array = new int[5];
for (int i = 0; i < array.length; i++){
      array[i] = i+1;
}

//그냥 처음부터 값 넣기
int[] second_array = new int[]{1,2,3,4,5};

 

 

ArrayList

//타입 설정을 하지 않으면 Object로 선언
ArrayList arrayList = new ArrayList();
//int타입만 사용 가능
ArrayList<Integer> int_arrayList = new ArrayList<>();
//초기 크기 설정
ArrayList<Integer> capacity_arraylist = new ArrayList<>(10);
//생성 시 값 추가
ArrayList<Integer> integerArrayList = new ArrayList<>(Arrays.asList(1,2,3));

//값 추가
int_arrayList.add(100);
//특정 인덱스에 값 추가
int_arrayList.add(1, 100);

//값 삭제 (index 기반으로 삭제됨)
int_arrayList.remove(1);
//값 모두 삭제
int_arrayList.clear();

//1번 index의 값 출력
int_arrayList.get(1);
//for문을 이용한 전체 출력
for (int i : int_arrayList){
    System.out.println(i);
}

//iterator을 이용한 전체 출력
Iterator iterator = int_arrayList.iterator();
while(iterator.hasNext()){
    System.out.println(iterator.next());
}

//값 검색
int_arrayList.contains(1);
int_arrayList.indexOf(1);

 

LinkedList

LinkedList<Integer> list = new LinkedList<>();//new에서 타입 파라미터 생략가능
LinkedList<Integer> linkedList2 = new LinkedList<Integer>(Arrays.asList(1,2));//생성시 값추가

list.addFirst(1); //가장 앞에 데이터 추가
list.addLast(2); //가장 뒤에 데이터 추가
list.add(3); //데이터 추가
list.add(1, 10); //index 1에 데이터 10 추가

list.removeFirst(); //가장 앞의 데이터 제거
list.removeLast(); //가장 뒤의 데이터 제거
list.remove(); //생략시 0번째 index제거
list.remove(1); //index 1 제거
list.clear(); //모든 값 제거

System.out.println(list.get(1)); //1번째 index 출력

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

 

 

 

Stack

Stack<Integer> stack = new Stack<>(); // stack 사용할래요!
stack.push(1);     // stack에 값 1 추가
stack.push(2);     // stack에 값 2 추가
stack.push(3);     // stack에 값 3 추가
stack.pop();       // stack에 값 제거
stack.clear();     // stack의 전체 값 제거 (초기화)
stack.peek();     // stack의 가장 상단의 값 출력
stack.size();      // stack의 크기 출력 : 3
stack.empty();     // stack이 비어있는제 check (비어있다면 true)
stack.contains(1) // stack에 1이 있는지 check (있다면 true)

 

 

Queue

Queue<Integer> queue = new LinkedList<>(); //큐 사용할래요!!!
queue.add(1);     // queue에 값 1 추가
queue.add(2);     // queue에 값 2 추가
queue.offer(3);   // queue에 값 3 추가
queue.poll();       // queue에 첫번째 값을 반환하고 제거 비어있다면 null
queue.remove();     // queue에 첫번째 값 제거
queue.clear();      // queue 초기화
queue.peek();       // queue의 첫번째 값 참조

 

 

PriorityQueue

//int형 priorityQueue 선언 (우선순위가 낮은 숫자 순)
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
//int형 priorityQueue 선언 (우선순위가 높은 숫자 순)
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(Collections.reverseOrder());

priorityQueue.offer(2);     // priorityQueue에 값 2 추가
priorityQueue.offer(1);     // priorityQueue에 값 1 추가
priorityQueue.offer(3);     // priorityQueue에 값 3 추가
priorityQueue.peek();       // priorityQueue에 첫번째 값 참조 = 1

priorityQueue.poll();       // priorityQueue에 첫번째 값을 반환하고 제거 비어있다면 null
priorityQueue.remove();     // priorityQueue에 첫번째 값 제거
priorityQueue.clear();      // priorityQueue에 초기화

 

 

728x90

'Computer Science > 자료구조' 카테고리의 다른 글

[자료구조] Graph  (0) 2022.01.31
[자료구조] 힙  (0) 2021.12.01
[자료구조] Graph  (0) 2021.10.27
[자료구조] Undirected Graph - 2차원 배열  (0) 2021.10.27
[자료구조] Linked List  (0) 2021.10.26

댓글