Daily coding

Java Basic : day 10 - LinkedList 링크드리스트 본문

Language/Java_basic

Java Basic : day 10 - LinkedList 링크드리스트

sunnnkim 2019. 12. 2. 19:47

LinkedList 링크드리스트

  ArrayList : 검색
  ( = Vector)
  LinkedList : 추가, 삭제가 빈번하게 이루어질 때 
 


단방향을의미하는 벡터는 어레이리스트랑 같은 역할 ( 위치의미가 아님 ) 
Vector vec = new Vector();
vec.add("ddddd");
vec.size();

 

링크드리스트 선언 방법


1. LinkedList
LinkedList list = new LinkedList();

 

2. List 인터페이스로도 선언가능

// 컬렉션 중 List는 인터페이스로 정의되어있다. 
// List list = new LinkedList();

if ( list.isEmpty( ) ) {
          System.out.println("데이터가 하나도 없습니다.");

// 데이터가 있는 지 확인하는 메소드

list.add("Tigers");
list.add("Lions");
list.add(1, "Giants");


출력하기

 

1. for문
System.out.println("출력1. for");
for (int i = 0; i < list.size(); i++) {
          String s = list.get(i);
          System.out.println(s);
}

addFirst( )
// 맨 처음 요소에 추가하기
list.addFirst("Bears");

addLast()
// 맨 끝에 요소 추가하기
list.addLast("Twins");

 

 

 

 

2. foreach
System.out.println("출력2. foreach");
for(String str : list) {
          System.out.println(str);
}



3. Iterator 사용 : 반복자 == 포인터(주소)를 가져옴

 

Iterator it; // = Stirng s 와 비슷한 의미
it = list.iterator(); // 제일 첫 노드의 주소값을 가져옴
System.out.println("출력3. Iterator 사용하기");

 

while ( it.hasNext( ) ) { // -> 출력할 다음 노드가 있을 때 까지 루프를 반복
          String temp = it.next();
          // next()는 현제 데이터를 넘겨주고 다음 데이터로 포인터를 이동한다.
          System.out.println(temp); 
          // 만약 다음 노드가 없으면 next()의 포인터는 null이 되고 
          // while문의 조건에 맞지 않아 반복문이 종료된다.
}

 


Iterator은 List 인터페이스보다는

Map의 데이터를 출력할 때 반드시 사용해야하는 인터페이스이므로 잘 알아두기


// ArrayList와 LinkedList는 서로 호환이 가능하다
ArrayList arrlist = new ArrayList(list);
          System.out.println("LinkedList를 ArrayList로 호환하기");
          for (int j = 0; j < arrlist.size(); j++) {
                   System.out.println(arrlist.get(j));
          }

}
}