ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Collection - Queue
    Java 2020. 1. 8. 21:26
    반응형

    Queue

    FIFO(First In First Out; 먼저 들어온 것이 먼저 나감)

    사용하는 경우 예) 웹 서버 요청을 들어온 순서대로 처리하는 경우

    LinkedList Class

    자신의 앞, 뒤에 있는 데이터를 기억하는 List

     

    배열의 중간에 있는 데이터가 지속적으로 추가/삭제되는 경우 LinkedList가 배열보다 메모리 공간 측면에서 훨씬 유리함

    - 배열과 같은 ArrayList와 Vector는 각 위치가 정해져 있고, 그 위치로 데이터를 찾음. 예를 들어, 맨 앞의 값 제거시 모든 값의 위치를 바꾸어줘야 함

    - LinkedList는 중간에 있는 데이터를 삭제하면, 지운 데이터의 앞의 데이터와 뒤의 데이터를 연결하면 됨(= 위치를 맞추기 위해 값을 이동하는 단계가 없음)

    상속 관계

    java.lang.Object
        java.util.AbstractCollection<E>
            java.util.AbstractList<E>
                java.util.AbstractSequentialList<E> // AbstractList와 차이는 add() set() remove() 등의 메서드에 대한 구현 내용이 다름
                    java.util.LinkedList<E>

    구현한 Inteface

    // 원격으로 객체를 전송하거나, 파일에 저장할 수 있음을 지정
    Serializable
    
    // Object 클래스의 clone() 메서드 사용 가능을 지정(복제 가능 객체)
    Cloneable
    
    // for-each를 사용할 수 있음
    Iterable<E>
    
    // 여러 개의 Objects를 하나의 Object에 담아 처리할 때의 메서드 지정
    Collection<E>
    
    // 맨 앞과 맨 뒤의 갚을 용이하게 처리하는 큐와 관련된 메서드 지정
    Deque<E>
    
    // 목록형 데이터를 처리하는 것과 관련된 메서드 지정
    List<E>
    
    // 큐를 처리하는 것과 관련된 메서드 지정
    Queue<E>
    Deque(발음 : deck과 동일) - Double Ended Queue
    JDK 6 ~
    Queue 인터페이스를 확장 = Queue의 기능을 모두 포함
    맨 앞과 맨 뒤에 값을 넣고 빼는 작업이 용이하도록 설계

    생성자

    일반적인 배열 타입의 클래스와는 달리 생성자로 객체 생성시 처음부터 크기를 지정하지 않음

    각 데이터들이 앞 뒤로 연결되는 구조이기 때문에, 미리 공간을 만들어둘 필요가 없음

    // 비어 있는 LinkedList Object를 생성
    LinkedList()
    
    // 매개 변수로 받은 Collection Object의 데이터를 LinkedList에 담음
    LinkedList(Collection<? extends E> c)

    System.out.println(LinkedList ll)

    객체에 들어있는 내용이 순서대로 출력되며 대괄호로 감싸줌

    예) [Jamie1, Jamie2]

    Element를 추가하는 메서드

    // 여러 인터페이스를 구현했기 때문에 중복된 기능을 수행하는 메서드들이 있음
    
    // LinkedList 객체의 가장 앞에 Element를 추가
    void addFirst(Object)
    boolean offerFirst(Object)
    void push(Object)
    
    // LinkedList 객체의 가장 뒤에 Element를 추가
    boolean add(Object)
    void addLast(Object)
    boolean offer(Object)
    boolean offerLast(Object)
    
    // LinkedList 객체의 특정 위치에 Element를 추가
    void add(int, Object)
    
    // LinkedList 객체의 특정 위치에 있는 Element를 수정하고, 기존의 Element를 리턴
    Object set(int, Object)
    
    // 매개 변수로 넘긴 컬렉션의 Elements를 추가
    boolean addAll(Collection)
    
    // 매개 변수로 넘긴 컬렉션의 Elements를 지정된 위치에 추가
    boolean addAll(int, Collection)

    특정 위치의 Element를 리턴하는 메서드

    // LinkedList 객체의 맨 앞에 있는 Element를 리턴
    Object getFirst()  // 모두 내부적으로 getFirst()를 사용하므로, 이 메서드 사용 권장
    Object peekFirst()
    Object peek()
    Object element()
    
    // LinkedList 객체의 맨 뒤에 있는 Element를 리턴
    Object getLast()
    Object peekLast()
    
    // LinkedList 객체의 지정한 위치에 있는 Element를 리턴
    Object get(int)

    어떤 Element가 포함되어 있는지 확인하는 메서드

    // 매개 변수로 넘긴 Element가 있을 경우 true 리턴
    boolean contains(Object)
    
    // 매개 변수로 넘긴 Element의 위치를 앞에서부터 검색하여 리턴, 없을 경우 -1
    int indexOf(Object)
    
    // 매개 변수로 넘긴 Element의 위치를 뒤에서부터 검색하여 리턴, 없을 경우 -1
    int lastIndexOf(Object)

    Element를 삭제하는 메서드

    대부분의 삭제 관련 메서드들은 LinkedList 객체에서 삭제 후 데이터를 리턴해주기 떄문에 조회 메서드들보다 삭제 메서드들이 더 많이 쓰임

    // LinkedList 객체의 가장 앞에 있는 Element를 삭제 후 리턴
    Object remove()
    Obejct removeFirst()  // 모두 내부적으로 removeFirst()를 호출하므로 해당 메서드 사용 권장
    Object poll()
    Object pollFirst()
    Object pop()
    
    // LinkedList 객체의 가장 뒤에 있는 Element를 삭제 후 리턴
    Object pollLast()
    Object removeLast()  // 모두 내부적으로 removeLast()를 호출하므로 해당 메서드 사용 권장
    
    // 매개 변수에 지정된 위치의 Element를 삭제 후 리턴
    Object remove(int)
    
    // 매개 변수로 넘겨진 Object와 동일한 Element 중 앞에서부터 가장 처음에 발견한 Element를 삭제
    boolean remove(Object)
    boolean removeFirstOccurrence(Object)
    
    // 매개 변수로 넘겨진 Object와 동일한 Element 중 뒤에서부터 가장 처음에 발견된 Element를 삭제
    boolean removeLastOccurrence(Object)

    그 외의 메서드

    • size() : 크기 확인

    • clear() : Elements 모두 삭제

    • clone() : 복제

    • toArray() : 배열로 변환

    하나씩 검색하기 위한 Iterator 객체 메서드 

    // 매개 변수에 지정된 위치부터의 Elements를 검색하기 위한 ListIterator 객체를 리턴
    ListIterator listIterator(int)
    
    // LinkedList의 Elements를 끝에서부터 검색하기 위한 Iterator 객체를 리턴
    Iterator descendingIterator()

    ListIterator

    • 이전 데이터도 검색할 수 있는 Iterator

    • Iterator 인터페이스가 다음 Element만을 검색할 수 있다는 단점을 보완

    • next() : 다음 Element 확인

    • (추가) previous() : 이전 Element 확인

    반응형

    'Java' 카테고리의 다른 글

    java.util Package  (0) 2020.01.13
    Collection - Map  (0) 2020.01.09
    Collection - Set  (0) 2020.01.08
    Collection - List  (0) 2020.01.08
    Collection  (0) 2020.01.07

    댓글

Designed by Tistory.