JavaTM Platform
Standard Ed. 6

java.util
클래스 AbstractList<E>

java.lang.Object 
  상위를 확장 java.util.AbstractCollection <E>
      상위를 확장 java.util.AbstractList<E>
모든 구현된 인터페이스:
Iterable <E>, Collection <E>, List <E>
직계의 기존의 서브 클래스:
AbstractSequentialList , ArrayList , Vector


public abstract class AbstractList<E>
extends AbstractCollection <E>
implements List <E>

이 클래스는,List 인터페이스의 스켈리턴 구현을 제공해, 배열과 같은 「랜덤 억세스」데이터 기억역에 연동하는 이 인터페이스를 구현하는데 필요한 작업량을 최소한으로 억제합니다. 링크 리스트와 같은 차례차례 액세스 데이터 기억역의 경우는, 이 클래스는 아니고 AbstractSequentialList 를 사용해 주세요.

변경 불가능한 리스트를 구현하려면 , 이 클래스를 확장해,get(int) 메소드 및 size() 메소드의 구현을 제공합니다.

변경 가능한 리스트를 구현하려면 , 상기에 가세해,set(int, E) 메소드를 오버라이드(override) 합니다. 이 메소드를 오버라이드(override) 하지 않았던 경우는,UnsupportedOperationException 가 throw 됩니다. 리스트가 가변 사이즈인 경우는,add(int, E) 메소드 및 remove(int) 메소드도 오버라이드(override) 할 필요가 있습니다.

Collection 인터페이스의 스펙으로 추천 되고 있도록(듯이), 일반적으로은, 인수 없음의 void 생성자 , 및 인수에 컬렉션을 취하는 생성자 을 제공해 주세요.

다른 컬렉션의 추상 구현과는 달라, 반복자의 구현을 제공할 필요는 없습니다. 반복자 및 리스트 반복자는 이 클래스에서 구현되어 랜덤 억세스용의 메소드인 get(int) ,set(int, E) ,add(int, E) , 및 remove(int) 의 상위에 자리매김됩니다.

구현의 상세한 것에 대하여는, 이 클래스의 abstract 메소드 이외의 각 메소드의 문서를 참조해 주세요. 보다 효율적인 구현을 할 수 있는 컬렉션의 경우는, 이러한 메소드를 오버라이드(override) 해도 괜찮습니다.

이 클래스는,Java Collections Framework 의 멤버입니다.

도입된 버젼:
1.2

필드의 개요
protected  int modCount
          이 리스트의 「구조가 변경되었다」회수입니다.
 
생성자 의 개요
protected AbstractList ()
          유일한 생성자 입니다.
 
메소드의 개요
 boolean add (E  e)
          지정된 요소를 리스트의 마지막에 추가합니다 (임의의 오퍼레이션).
 void add (int index, E  element)
          리스트내의 지정된 위치에, 지정된 요소를 삽입합니다 (임의의 오퍼레이션).
 boolean addAll (int index, Collection <? extends E > c)
          지정된 컬렉션내의 모든 요소를, 리스트의 지정된 위치에 삽입합니다 (임의의 오퍼레이션).
 void clear ()
          모든 요소를 리스트로부터 삭제합니다 (임의의 오퍼레이션).
 boolean equals (Object  o)
          지정된 객체가 리스트와 동일한지 어떤지를 비교합니다.
abstract  E get (int index)
          리스트내의 지정된 위치에 있는 요소를 돌려줍니다.
 int hashCode ()
          이 리스트의 해시 코드값를 돌려줍니다.
 int indexOf (Object  o)
          지정된 요소가 리스트내에서 최초로 검출된 위치의 인덱스를 돌려줍니다.
 Iterator <E > iterator ()
          이 리스트내의 요소를 적절한 순서로 반복 처리 하는 반복자를 돌려줍니다.
 int lastIndexOf (Object  o)
          지정된 요소가 리스트내에서 마지막에 검출된 위치의 인덱스를 돌려줍니다.
 ListIterator <E > listIterator ()
          이 리스트내의 요소를 적절한 순서로 반복 처리 하는 리스트 반복자를 돌려줍니다.
 ListIterator <E > listIterator (int index)
          리스트내의 요소를 적절한 순서로 반복 처리 하는, 리스트내의 지정된 위치로부터 개시하는 반복자를 돌려줍니다.
 E remove (int index)
          리스트내의 지정된 위치에 있는 요소를 삭제합니다 (임의의 오퍼레이션).
protected  void removeRange (int fromIndex, int toIndex)
          fromIndex (이것을 포함한다) ~ toIndex (이것을 포함하지 않는다)의 범위의 인덱스를 가지는 모든 요소를 이 리스트로부터 삭제합니다.
 E set (int index, E  element)
          리스트내의 지정된 위치에 있는 요소를, 지정된 요소에 옮겨놓습니다 (임의의 오퍼레이션).
 List <E > subList (int fromIndex, int toIndex)
          이 리스트의,fromIndex (이것을 포함한다)로부터 toIndex (이것을 포함하지 않는다)의 범위의 부분의 뷰를 돌려줍니다.
 
클래스 java.util. AbstractCollection 로부터 상속된 메소드
addAll , contains , containsAll , isEmpty , remove , removeAll , retainAll , size , toArray , toArray , toString
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , finalize , getClass , notify , notifyAll , wait , wait , wait
 
인터페이스 java.util. List 로부터 상속된 메소드
addAll , contains , containsAll , isEmpty , remove , removeAll , retainAll , size , toArray , toArray
 

필드의 상세

modCount

protected transient int modCount
이 리스트의 「구조가 변경되었다」회수입니다. 구조의 변경이란, 리스트의 사이즈의 변경이나, 그 외의 진행중의 반복 처리가 부정한 결과를 가져오는 것 같은 변경입니다.

이 필드는,iterator 메소드 및 listIterator 메소드에 의해 반환되는 반복자 및 리스트 반복자의 구현에 의해 사용됩니다. 이 필드의 값이 예기치 않은 형태로 변화했을 경우, 반복자나 리스트 반복자는 next,remove,previous,set, 또는 add 오퍼레이션에 응해 ConcurrentModificationException 를 throw 합니다. 이것은, 반복 처리중의 병행 변경을 앞두고, 미확정 동작은 아니고 fail-fast 동작을 제공합니다.

이 필드를 서브 클래스에서 사용하는 것은 임의입니다. 서브 클래스에서 fail-fast 반복자 및 리스트 반복자를 제공할 필요가 있는 경우에는, 단순하게, 서브 클래스의 add(int, E) 메소드 및 remove(int) 메소드 ( 및, 서브 클래스가 오버라이드(override) 하는 메소드 가운데로, 리스트의 구조적인 변경을 하는 메소드)의 내부에서, 이 필드를 인크리먼트(increment) 합니다. @code add(int, E)} 또는 remove(int) 에 대한 1 회의 호출에서는, 필드에 1 만 더할 필요가 있습니다. 그렇게 하지 않으면 반복자 ( 및 리스트 반복자)가 잘못해 ConcurrentModificationExceptions 를 throw 하게 됩니다. 구현으로 fail-fast 반복자를 제공하지 않는 경우는, 이 필드를 무시해도 괜찮습니다.

생성자 의 상세

AbstractList

protected AbstractList()
유일한 생성자 입니다. 서브 클래스의 생성자 에 의한 호출용으로, 일반적으로은 암묵적으로 불려 갑니다.

메소드의 상세

add

public boolean add(E  e)
지정된 요소를 리스트의 마지막에 추가합니다 (임의의 오퍼레이션).

이 오퍼레이션을 지원하는 리스트는, 리스트에 추가할 수 있는 요소에 제한을 더하는 경우가 있습니다. 특히, 리스트에는 null 요소의 추가를 거부하는 것도 있으면, 추가되는 요소의 형태에 대해 제한을 더하는 것도 있습니다. List 클래스는, List 에 추가할 수 있는 요소에 대해 제약이 있으면, 문서로 그것을 명확하게 지정할 필요가 있습니다.

이 구현은 add(size(), e) 를 호출합니다.

이 구현은,add(int, E) 가 오버라이드(override) 되지 않는 한 UnsupportedOperationException 를 throw 합니다.

정의:
인터페이스 Collection <E > 내의 add
정의:
인터페이스 List <E > 내의 add
오버라이드(override):
클래스 AbstractCollection <E > 내의 add
파라미터:
e - 리스트에 추가되는 요소
반환값:
true (Collection.add(E) 로 지정되었을 경우와 같이)
예외:
UnsupportedOperationException - 리스트가 add 오퍼레이션을 지원하고 있지 않는 경우
ClassCastException - 지정된 요소의 클래스가 원인으로, 이 리스트에 그 요소를 추가할 수 없는 경우
NullPointerException - 지정된 요소가 null 로, 이 리스트가 null 요소를 허용 하지 않는 경우
IllegalArgumentException - 이 요소가 있는 특성이 원인으로, 이 리스트에 요소를 추가할 수 없는 경우

get

public abstract E  get(int index)
리스트내의 지정된 위치에 있는 요소를 돌려줍니다.

정의:
인터페이스 List <E > 내의 get
파라미터:
index - 반환되는 요소의 인덱스
반환값:
리스트내의 지정된 위치에 있는 요소
예외:
IndexOutOfBoundsException - 인덱스가 범위외의 경우 (index < 0 || index > size())

set

public E  set(int index,
             E  element)
리스트내의 지정된 위치에 있는 요소를, 지정된 요소에 옮겨놓습니다 (임의의 오퍼레이션).

이 구현은, 항상 UnsupportedOperationException 를 throw 합니다.

정의:
인터페이스 List <E > 내의 set
파라미터:
index - 치환되는 요소의 인덱스
element - 지정된 위치에 포함되는 요소
반환값:
지정된 위치에 이전 있던 요소
예외:
UnsupportedOperationException - set 오퍼레이션이 이 리스트로 지원되지 않는 경우
ClassCastException - 지정된 요소의 클래스가 원인으로, 이 리스트에 그 요소를 추가할 수 없는 경우
NullPointerException - 지정된 요소가 null 로, 이 리스트가 null 요소를 허용 하지 않는 경우
IllegalArgumentException - 지정된 요소가 있는 프로퍼티이 원인으로, 이 리스트에 그 요소를 추가할 수 없는 경우
IndexOutOfBoundsException - 인덱스가 범위외의 경우 (index < 0 || index > size())

add

public void add(int index,
                E  element)
리스트내의 지정된 위치에, 지정된 요소를 삽입합니다 (임의의 오퍼레이션). 그 위치와 그 이후에 요소가 있으면 그것들을 오른쪽으로 이동시켜, 각 요소의 인덱스에 1 을 더합니다.

이 구현은, 항상 UnsupportedOperationException 를 throw 합니다.

정의:
인터페이스 List <E > 내의 add
파라미터:
index - 지정의 요소가 삽입되는 위치의 인덱스
element - 삽입되는 요소
예외:
UnsupportedOperationException - add 오퍼레이션이 이 리스트로 지원되지 않는 경우
ClassCastException - 지정된 요소의 클래스가 원인으로, 이 리스트에 그 요소를 추가할 수 없는 경우
NullPointerException - 지정된 요소가 null 로, 이 리스트가 null 요소를 허용 하지 않는 경우
IllegalArgumentException - 지정된 요소가 있는 프로퍼티이 원인으로, 이 리스트에 그 요소를 추가할 수 없는 경우
IndexOutOfBoundsException - 인덱스가 범위외의 경우 (index < 0 || index > size())

remove

public E  remove(int index)
리스트내의 지정된 위치에 있는 요소를 삭제합니다 (임의의 오퍼레이션). 후속의 요소는 왼쪽으로 이동합니다 (인덱스치로부터 1 을 감산). 리스트로부터 삭제된 요소가 돌려주어집니다.

이 구현은, 항상 UnsupportedOperationException 를 throw 합니다.

정의:
인터페이스 List <E > 내의 remove
파라미터:
index - 삭제되는 요소의 인덱스
반환값:
지정된 위치에 이전 있던 요소
예외:
UnsupportedOperationException - remove 오퍼레이션이 이 리스트로 지원되지 않는 경우
IndexOutOfBoundsException - 인덱스가 범위외의 경우 (index < 0 || index > size())

indexOf

public int indexOf(Object  o)
지정된 요소가 리스트내에서 최초로 검출된 위치의 인덱스를 돌려줍니다. 지정된 요소가 리스트에 없는 경우는 -1 을 돌려줍니다. 즉,(o==null ?  get(i) ==null : o.equals(get(i))) 가 되는, 최소의 인덱스 i 를 돌려줍니다. 그러한 인덱스가 존재하지 않는 경우는 -1 을 돌려줍니다.

이 구현은,listIterator() 를 사용해, 최초로 리스트 반복자를 가져옵니다. 다음에, 지정된 요소가 발견되든가, 혹은 리스트의 말미에 이를 때까지, 리스트의 내용을 차례차례로 조사합니다.

정의:
인터페이스 List <E > 내의 indexOf
파라미터:
o - 검색하는 요소
반환값:
지정된 요소가 리스트내에서 최초로 검출된 위치의 인덱스. 그 요소가 리스트에 없는 경우는 -1
예외:
ClassCastException - 지정된 요소의 형태가, 이 리스트와 호환이 아닌 경우 (생략 가능)
NullPointerException - 지정된 요소가 null 이며, 이 리스트가 null 요소를 허가하지 않는 경우 (생략 가능)

lastIndexOf

public int lastIndexOf(Object  o)
지정된 요소가 리스트내에서 마지막에 검출된 위치의 인덱스를 돌려줍니다. 지정된 요소가 리스트에 없는 경우는 -1 을 돌려줍니다. 즉,(o==null ?  get(i) ==null : o.equals(get(i))) 가 되는, 최대의 인덱스 i 를 돌려줍니다. 그러한 인덱스가 존재하지 않는 경우는 -1 을 돌려줍니다.

이 구현은,listIterator(size()) 를 사용해, 최초로 리스트의 말미를 가리키는 리스트 반복자를 가져옵니다. 다음에, 지정된 요소가 발견되든가, 혹은 리스트의 선두에 이를 때까지, 리스트 내용을 역방향으로 차례차례 조사합니다.

정의:
인터페이스 List <E > 내의 lastIndexOf
파라미터:
o - 검색하는 요소
반환값:
지정된 요소가 리스트내에서 마지막에 검출된 위치의 인덱스. 그 요소가 리스트에 없는 경우는 -1
예외:
ClassCastException - 지정된 요소의 형태가, 이 리스트와 호환이 아닌 경우 (생략 가능)
NullPointerException - 지정된 요소가 null 이며, 이 리스트가 null 요소를 허가하지 않는 경우 (생략 가능)

clear

public void clear()
모든 요소를 리스트로부터 삭제합니다 (임의의 오퍼레이션). 이 호출이 돌아오면(자), 이 리스트는 비웁니다.

이 구현은 removeRange(0, size()) 를 호출합니다.

remove(int index) 또는 removeRange(int fromIndex, int toIndex) 가 오버라이드(override) 되지 않는 한, 이 구현은 UnsupportedOperationException 를 throw 합니다.

정의:
인터페이스 Collection <E > 내의 clear
정의:
인터페이스 List <E > 내의 clear
오버라이드(override):
클래스 AbstractCollection <E > 내의 clear
예외:
UnsupportedOperationException - 리스트가 clear 오퍼레이션을 지원하고 있지 않는 경우

addAll

public boolean addAll(int index,
                      Collection <?  extends E > c)
지정된 컬렉션내의 모든 요소를, 리스트의 지정된 위치에 삽입합니다 (임의의 오퍼레이션). 그 위치와 그 이후에 요소가 있는 경우는, 그것들을 오른쪽으로 이동해, 각 요소의 인덱스에 1 을 더합니다. 새로운 요소는, 지정된 컬렉션의 반복자에 의해 반환되는 순서로 리스트에 삽입됩니다. 오퍼레이션의 진행중에, 지정된 컬렉션이 변경되었을 경우의, 이 오퍼레이션의 동작은 정의되고 있지 않습니다. 즉, 지정된 컬렉션이 이 리스트로, 게다가 빈 상태(empty)이 아닌 경우에 일어납니다.

이 구현은, 지정된 컬렉션의 반복자를 취득해, 반복자로부터 취득한 요소를 이 리스트의 적절한 위치에 1 개씩 삽입하는 조작을 반복합니다. 삽입에는 add(int, E) 메소드를 사용합니다. 많은 경우, 구현에서는, 이 메소드를 오버라이드(override) 하는 편이 효율적입니다.

이 구현은,add(int, E) 가 오버라이드(override) 되지 않는 한 UnsupportedOperationException 를 throw 합니다.

정의:
인터페이스 List <E > 내의 addAll
파라미터:
index - 지정된 컬렉션의 최초의 요소를 삽입하는 위치의 인덱스
c - 요소가 리스트에 추가되는 컬렉션
반환값:
이 호출의 결과, 이 리스트가 변경되었을 경우는 true
예외:
UnsupportedOperationException - addAll 오퍼레이션이 이 리스트로 지원되지 않는 경우
ClassCastException - 지정된 컬렉션이 있는 요소의 클래스가 원인으로, 이 리스트에 그 컬렉션을 추가할 수 없는 경우
NullPointerException - 지정된 컬렉션에 1 개 이상의 null 요소가 포함되어 있어 이 리스트가 null 요소를 허가하지 않는 경우, 또는 지정된 컬렉션이 null 의 경우
IllegalArgumentException - 지정된 컬렉션이 있는 요소가 있는 특성이 원인으로, 이 리스트에 그 컬렉션을 추가할 수 없는 경우
IndexOutOfBoundsException - 인덱스가 범위외의 경우 (index < 0 || index > size())

iterator

public Iterator <E > iterator()
이 리스트내의 요소를 적절한 순서로 반복 처리 하는 반복자를 돌려줍니다.

이 구현은, 반복자 인터페이스의 간단한 구현을 돌려줍니다. 이 처리에서는, 기본으로 되는 리스트의 size(),get(int), 및 remove(int) 라고 하는 각 메소드를 이용합니다.

이 메소드로 반환되는 반복자는, 리스트의 remove(int) 메소드가 오버라이드(override) 되지 않는 한,remove 메소드를 호출하면(자) UnsupportedOperationException 를 throw 합니다.

이 구현은, (protected) modCount 필드의 스펙으로 설명되고 있도록(듯이), 병행 변경을 앞두고 실행시의 예외를 throw 하는 일도 있습니다.

정의:
인터페이스 Iterable <E > 내의 iterator
정의:
인터페이스 Collection <E > 내의 iterator
정의:
인터페이스 List <E > 내의 iterator
정의:
클래스 AbstractCollection <E > 내의 iterator
반환값:
리스트내의 요소를 적절한 순서로 반복 처리 하는 반복자
관련 항목:
modCount

listIterator

public ListIterator <E > listIterator()
이 리스트내의 요소를 적절한 순서로 반복 처리 하는 리스트 반복자를 돌려줍니다.

이 구현은 listIterator(0) 를 돌려줍니다.

정의:
인터페이스 List <E > 내의 listIterator
반환값:
리스트내의 요소를 적절한 순서로 반복 처리 하는 리스트 반복자
관련 항목:
listIterator(int)

listIterator

public ListIterator <E > listIterator(int index)
리스트내의 요소를 적절한 순서로 반복 처리 하는, 리스트내의 지정된 위치로부터 개시하는 반복자를 돌려줍니다. 지정된 인덱스는,next 의 최초의 호출에 의해 반환되는 최초의 요소를 나타냅니다. previous 의 최초의 호출은, 지정된 인덱스로부터 1 을 뺀 값의 인덱스를 가지는 요소를 돌려줍니다.

이 구현은, ListIterator 인터페이스의 간단한 구현을 돌려줍니다. ListIterator 인터페이스는,iterator() 메소드에 의해 반환되는 Iterator 인터페이스의 구현을 확장하는 것입니다. ListIterator 의 구현은, 기본으로 되는 리스트의 get(int),set(int, E),add(int, E), 및 remove(int) 의 각 메소드에 의존합니다.

이 구현으로 반환되는 리스트 반복자는, 리스트의 remove(int),set(int, E), 및 add(int, E) 메소드가 오버라이드(override) 되지 않는 한,remove,set, 및 add 메소드에 응답해 UnsupportedOperationException 를 throw 합니다.

이 구현은, (protected) modCount 필드의 스펙으로 설명되고 있도록(듯이), 병행 변경을 앞두고 실행시의 예외를 throw 하는 일도 있습니다.

정의:
인터페이스 List <E > 내의 listIterator
파라미터:
index - 리스트 반복자로부터 (next 메소드 호출에 의해) 반환되는 최초의 요소의 인덱스
반환값:
리스트내의 요소를 적절한 순서로 반복 처리 하는, 리스트내의 지정된 위치로부터 개시하는 리스트 반복자
예외:
IndexOutOfBoundsException - 인덱스가 범위외의 경우 (index < 0 || index > size())
관련 항목:
modCount

subList

public List <E > subList(int fromIndex,
                       int toIndex)
이 리스트의,fromIndex (이것을 포함한다)로부터 toIndex (이것을 포함하지 않는다)의 범위의 부분의 뷰를 돌려줍니다. fromIndextoIndex 가 동일한 경우는, 빈 상태(empty)의 리스트가 돌려주어집니다. 반환되는 리스트는 이 리스트에 연동하고 있습니다. 그 때문에, 반환되는 리스트내에서의 비구조적인 변경은 이 리스트에 반영되어 이 리스트내에서의 변경은 반환되는 리스트에 반영됩니다. 반환되는 리스트는, 이 리스트에 의해 지원되고 있는, 리스트에 관련하는 옵션의 오퍼레이션을 모두 지원합니다.

이 메소드는, 배열에 일반적으로 볼 수 있는 것 같은, 명시적인 범위 조작을 위한 요구를 불필요하게 합니다. 리스트를 요구하는 어떠한 조작도 리스트 전체는 아니고, subList 뷰상에서 조작하는 것으로, 범위 조작으로서 사용할 수 있습니다. 예를 들어, 다음의 관용법은, 지정된 범위의 요소를 리스트로부터 삭제합니다.

list.subList(from, to). clear();
 
indexOflastIndexOf 에서도, 같은 관용법을 작성할 수 있습니다. Collections 클래스의 알고리즘이 모두 subList 에 적용할 수 있습니다.

배킹 리스트 (즉, 이 리스트)의 구조가, 반환된 리스트를 경유하지 않고 로 변경되었을 경우, 이 메소드로 반환된 리스트의 시멘틱스는 보증되지 않습니다. 구조의 변경이란, 리스트의 사이즈가 바뀌는 것 같은 변경이나, 진행중의 반복 처리가 부정한 결과에 끝나는 것 같은 변경입니다.

이 구현은,AbstractList 를 서브 클래스화하는 리스트를 돌려줍니다. 이 서브 클래스는, 전용 필드에, 배킹 리스트내의 subList 의 오프셋(offset), subList 의 사이즈 (존속 기간중으로 변경하는 일도 가능), 및 배킹 리스트의 요구되는 modCount 치를 포함합니다. 서브 클래스에는 변형이 2 개 있어, 그 중의 1 개(살)에는 RandomAccess 가 구현되고 있습니다. 리스트가 RandomAccess 를 구현하면(자), 반환된 리스트는 RandomAccess 를 구현하는 서브 클래스의 인스턴스가 됩니다.

서브 클래스의 set(int, E),get(int),add(int, E),remove(int),addAll(int, Collection), 및 removeRange(int, int) 의 각 메소드는, 인덱스의 경계를 조사해 오프셋(offset)에 맞추어 조정한 후에, 배킹 추상 리스트의 대응하는 메소드에 모두 위양 합니다. addAll(Collection c) 메소드는, 단지 addAll(size, c) 를 돌려줄 뿐입니다.

listIterator(int) 메소드는, 배킹 리스트의 리스트 반복자에게로의 「래퍼 객체」를 돌려줍니다. 이 「래퍼 객체」는, 배킹 리스트의 대응하는 메소드로 작성됩니다. iterator 메소드는 listIterator() 를 돌려주는 것만으로 있어, 같이size 메소드는 서브 클래스의 size 필드를 돌려줄 뿐입니다.

모든 메소드는, 최초로, 배킹 리스트의 실제의 modCount 가 그 요구된 값에 동일한가를 조사해 그렇지 않은 경우는 ConcurrentModificationException 를 throw 합니다.

정의:
인터페이스 List <E > 내의 subList
파라미터:
fromIndex - subList 의 하단점 (이것을 포함한다)
toIndex - subList 의 상단점 (이것을 포함하지 않는다)
반환값:
이 리스트내의 지정된 범위의 뷰
예외:
IndexOutOfBoundsException - 단 점의 인덱스치가 범위외의 경우 (fromIndex < 0 || toIndex > size)
IllegalArgumentException - 단 점의 인덱스의 순서가 부정한 경우 (fromIndex > toIndex)

equals

public boolean equals(Object  o)
지정된 객체가 리스트와 동일한지 어떤지를 비교합니다. 지정된 객체도 리스트이며, 사이즈가 같아, 2 개의 리스트의 대응하는 요소가 모두 「동일하다」경우에만 true 를 돌려줍니다. (e1==null ? e2==null : e1.equals(e2)) 의 경우, 2 개의 요소 e1e2 는, 동일해집니다. 즉 2 개의 리스트는, 같은 요소가 같은 순서로 포함되어 있는 경우에 동일한 것으로서 정의됩니다.

이 구현은, 최초로, 지정된 객체가 이 리스트일지 어떨지를 조사합니다. 이 리스트인 경우, 구현은 true 를 돌려줍니다. 그렇지 않은 경우는, 지정된 객체가 리스트인가 어떤가를 조사해 리스트가 아니면 false 를 돌려줍니다. 지정된 객체가 리스트의 경우는, 양쪽 모두의 리스트의 내용을 차례차례 조사해, 요소의 대응하는 페어를 비교합니다. 비교의 결과 false 가 반환되는 일이 있으면, 이 메소드도 false 를 돌려줍니다. 어느 쪽인가의 리스트의 반복자의 요소가 먼저 없어졌을 경우는, 2 개의 리스트의 길이가 동일하지 않기 때문에 false 를 돌려줍니다. 그렇지 않은 경우는, 반복이 완료한 시점에서 true 를 돌려줍니다.

정의:
인터페이스 Collection <E > 내의 equals
정의:
인터페이스 List <E > 내의 equals
오버라이드(override):
클래스 Object 내의 equals
파라미터:
o - 리스트와 동일한지 어떤지를 비교하는 객체
반환값:
지정된 객체가 이 리스트와 동일한 경우는 true
관련 항목:
Object.hashCode() , Hashtable

hashCode

public int hashCode()
이 리스트의 해시 코드값를 돌려줍니다.

이 구현에서는,List.hashCode() 메소드의 문서로 리스트 해쉬 함수를 정의하는데 사용되고 있는 코드를 그대로 사용하고 있습니다.

정의:
인터페이스 Collection <E > 내의 hashCode
정의:
인터페이스 List <E > 내의 hashCode
오버라이드(override):
클래스 Object 내의 hashCode
반환값:
리스트의 해시 코드값
관련 항목:
Object.equals(java.lang.Object) , Hashtable

removeRange

protected void removeRange(int fromIndex,
                           int toIndex)
fromIndex (이것을 포함한다) ~ toIndex (이것을 포함하지 않는다)의 범위의 인덱스를 가지는 모든 요소를 이 리스트로부터 삭제합니다. 후속의 요소는 왼쪽으로 이동합니다 (인덱스치가 감소). 이 호출에 의해,(toIndex - fromIndex) 의 요소수만큼 ArrayList 가 짧아집니다. toIndex==fromIndex 의 경우, 이 오퍼레이션은 아무것도 실시하지 않습니다.

이 메소드는, 이 리스트 및 그 사브리 파업으로 clear 오퍼레이션에 의해 불려 갑니다. 이 메소드를 오버라이드(override) 해 리스트의 구현의 특성을 최대한으로 이용하도록(듯이) 하면(자), 이 리스트 및 그 사브리 파업에 대한 clear 오퍼레이션의 성능이 꽤 향상합니다.

이 구현은,fromIndex 의 전에 위치하는 리스트 반복자를 취득해, 범위 전체가 삭제될 때까지 ListIterator.nextListIterator.remove 를 이 순서로 반복해 호출합니다. 주:ListIterator.remove 가 1 차 시간을 필요로 하는 경우, 이 구현에서는 2 차 시간이 필요합니다.

파라미터:
fromIndex - 삭제하는 최초의 요소의 인덱스
toIndex - 삭제하는 마지막 요소의 직후의 인덱스

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.