반응형
package collection_fram;

public class Board {
	String subject;
	String content;
	String writer;
	
	public Board(String subject , String content, String writer) {
		this.subject = subject;
		this.content = content;
		this.writer = writer;
	}
}
package collection_fram;

import java.util.*;

public class LinkedList_example {

	public static void main(String[] args) {


		List<String> list = new LinkedList<String>();
		list.add(0,String.valueOf(1));
		list.add(String.valueOf(2)); // toString의 경우 null 문자열 처리 불가
		list.add(String.valueOf(3));
		System.out.println(list);// [1, 2, ,3]
		list.remove(1); // 2 제거 [1 , 3]
		list.add("2"); //  맨 끝에 2 추가 [1, 3 ,2]
		list.add("1"); // [1, 3, 2, 1]
		System.out.println(list); 
		list.remove("1"); // [3, 2, 1] 가장 적은 인덱스에 것 먼저 제거
		System.out.println(list);
		
		
		List<Board> list2 = new LinkedList<Board>(); 
		list2.add(new Board("제목1","내용1","글쓴이1"));
		list2.add(1,new Board("제목2","내용2","글쓴이2"));
		list2.add(new Board("제목3","내용3","글쓴이3"));
		list2.size(); // 1
		list2.remove(1);
		Board board = list2.get(1); // collection_fram.Board@26f0a63f
		System.out.println(board.subject); // 제목3
		System.out.println(board.content); // 내용3
		System.out.println(board.writer); // 글쓴이3
		


 		for (int i = 0 ; i < 3; i++) {
 			String title = Scanf.nextLine();
 			String inner = Scanf.nextLine();
 			String author =Scanf.nextLine();
 			Board temp = new Board(title,inner,author);
 			list2.add(temp);
 		}

	}

}

 

Linked List (연결리스트)의 특징은 배열과 다르게 인덱스 값이 아닙니다. 

여러 유형이 있지만 위에 사진 처럼 Data값과 다음 주소를 가르키고 있는 NEXT로 이루어져있는 걸로 생각 해봅시다.

Linked List의 특징인덱스로 값을 한번에 찾아갈 수 없습니다. 왜냐하면 인덱스를 이용 안 하거든요

찾아가려면 Head에 연결된 부분에서 Data값을 확인 후 아니면 Next 이런식으로 끝까지 가야합니다.

그럼 이런거에 장점이 뭐냐 싶은데 장점은 ArrayList나 Vector의 경우 값을 중간에 추가시키려면

전부를 다 밀어야합니다. 예를 들어 100개 인덱스까지 저장되어있는 건데 인덱스 2에 추가시키려면

2에서 99번까지 하나씩 밀어야 합니다.

하지만 Linked List는 NEXT의 주소를 추가하려는 거에 위에 사진처럼 가르키게하면 됩니다.

 

List <자료형> 객체명 = new LinkedList<자료형>();
List <String> list = new LinkedList<String>();

List <Board> list = new LinkedList<Board>();

 

list.add("내용"); 으로 추가 시킬 수 있습니다. 또한

list.add(인덱스,"내용")으로 해당 인덱스에 추가시킬 수 있습니다.

list.get(인덱스)로 해당 인덱스의 값을 반환 받을 수 있습니다.

list.size()로 해당 ArrayList의 사이즈를 알 수 있습니다.

list.remove(인덱스)로 해당 인덱스 값을 삭제 할 수 있습니다.

 

또한 Board라는 클래스를 이용한 객체를 자료형에 선언도 가능합니다.

이럴경우 get으로 접근 할때 board.subject로 접근하던가 아니면 값을 return해주는 getter있으면 됩니다.

 

값을 입력받아 넣을 때는 각각에 해당되는 생성자의 매개변수를 미리 입력받아 넣고 그걸 생성자로 선언해

add를 통해 차곡차곡 쌓으면 됩니다.

 

반응형