자바(Java) 자료구조 클래스 LinkedList 구현하는 방법 |
자료구조를 좀더 쉽게 구현할수 있도록 만든 LinkedList 를 이용하는 방법에 대해 알아 보도록 하겠습니다. 이 외에도 priorityQueue, priorityBlockingQueue 클래스도 있지만 잘 사용하지 않습니다. Queue 의 원리를 이해하고 싶다면 클래스를 직접구현해 보는 것도 좋겠죠.
▼ LinkedList 출력하는 방법입니다. addLast 함수는 Link 의 끝에 데이터를 붙이는 함수입니다. Println 함수로 데이터를 출력할 때 들어간 순서대로 출력이 되겠죠.
LinkedList<Integer> link = new LinkedList<Integer>();
link.addLast(10);
link.addLast(20);
link.addLast(30);
System.out.println(link);
// 출력
[10, 20, 30]
▼ LinkedList 에 추가되어 있는 데이터를 삭제하는 방법입니다. 삭제 함수는 remove() 이며 인수로 리스트에서 위치값을 넘기면 됩니다. 예제에서 넘긴1 은 두번째에 추가한 15값이 되겠죠. 삭제하고 나서 값들은 왼쪽으로 한칸씩 옮겨집니다. 그래서 다음에 remove(1) 을 했을 때 2의 위치에 있던 20 이 삭제 되는 것입니다.
LinkedList<Integer> link = new LinkedList<Integer>();
link.addLast(10);
link.addLast(15);
link.addLast(20);
link.addLast(30);
System.out.println(link.remove(1));
System.out.println(link.remove(1));
System.out.println(link);
// 출력
15
20
[10, 30]
▼ LinkedList 에 추가되어 있는 데이터의 개수를 알아오는 방법입니다. 함수는 size() 를 사용하게 됩니다.
LinkedList<Integer> link = new LinkedList<Integer>();
link.addLast(10);
link.addLast(20);
link.addLast(30);
System.out.println(link.size());
// 출력
3
▼ LinkedList 에 추가되어 있는 값을 가져오는 방법입니다. get() 함수를 사용하며 remove() 함수처럼 인수로 리스트 위치값을 넘기시면 됩니다.
LinkedList<Integer> link = new LinkedList<Integer>();
link.addLast(10);
link.addLast(20);
link.addLast(30);
System.out.println(link.get(0));
System.out.println(link.get(1));
System.out.println(link.get(2));
// 출력
10
20
30
▼ 이번에는 특정한 값이 리스트에서 어느 위치에 있는지 알아내는 방법입니다. 보통 클래스에서 위치값을 알아오는 함수의 명은 indexOf() 입니다. LinkedList 에서도 동일한 함수를 사용합니다. 찾고자 하는 데이터를 indexOf() 의 인수로 넘기게 되면 위치값을 반환합니다. 만약 값이 없다면 -1 을 리턴하게 됩니다.
LinkedList<Integer> link = new LinkedList<Integer>();
link.addLast(10);
link.addLast(20);
link.addLast(30);
System.out.println(link.indexOf(10));
System.out.println(link.indexOf(20));
System.out.println(link.indexOf(30));
// 출력
0
1
2
▼ 이번에는 반복문에 대해서 알아보겠습니다. LinkedList 함수중 listIterator() 는 terator 객체를 리턴해줍니다. Iterator 는 hasNext(), next() 함수를 이용해서 null 이 나올 때 까지 편리하게 반복할수 있도록 만든 클래스입니다. 아래 샘플은 next() 함수로 값을 꺼내면서 한칸씩 이동합니다. 그리고 꺼낸값을 비교해서 10 이면 다음 링크에 add() 함수로 20 을 집어 넣는 것이죠. addLast() 는 무조건 링크의 끝에 데이터를 추가하고 add() 함수는 커서가 있는 위치 다음에 추가 하게 됩니다.
LinkedList<Integer> link = new LinkedList<Integer>();
link.addLast(10);
link.addLast(30);
ListIterator<Integer> li = link.listIterator();
while(li.hasNext()){
if(li.next() == 10)
li.add(20);
}
System.out.println(link);
// 출력
[10, 20, 30]
▼ 이렇게 add 를 통해서 데이터를 추가하게 되면 커서가 있는 위치의 두에 붙지만 remove 는 현재 커서가 있는 위치에 값을 삭제합니다.
LinkedList<Integer> link = new LinkedList<Integer>();
link.addLast(10);
link.addLast(20);
link.addLast(30);
ListIterator<Integer> li = link.listIterator();
while(li.hasNext()){
if(li.next() == 20)
li.remove();
}
System.out.println(link);
// 출력
[10, 30]
'자바(JAVA)' 카테고리의 다른 글
자바 Java 윈도우 위치 찾기 명령어 (1) | 2022.12.25 |
---|---|
자바(Java) 문자열 구분을 위한 Split 함수 사용하는 방법 (0) | 2022.10.24 |
자바(Java) 데이터 형변환 char -> String 여러가지 방법 (5) | 2022.07.22 |
자바(Java) 클래스와 함수의 재정의를 방비하는 final 키워드에 대해 알아보자 (0) | 2020.08.16 |
자바(Java) AWT – Button 컨트롤 사용법과 예제 (1) | 2020.06.04 |
자바(Java) AWT – CheckboxGroup 이용해서 옵션기능구현 (0) | 2020.05.24 |
JSP Servlet 구현하기, POST 로 값 전송하기 (0) | 2019.11.16 |
자바(Java) static 문법에 대해서 알아 봅니다. (0) | 2019.11.02 |