이것은 java.util.List와 같은 정렬 된 컬렉션을위한 것입니다. 언어 디자이너가 왜 마지막 방법을 포함하지 않았습니까? 내가 생각할 수있는 유일한 이유는 다음과 같습니다.
- 컬렉션이 비어있을 때 모호함 (널 리턴 또는 예외 예외)
- API 팽창
다른 이유가 있습니까?
이것은 java.util.List와 같은 정렬 된 컬렉션을위한 것입니다. 언어 디자이너가 왜 마지막 방법을 포함하지 않았습니까? 내가 생각할 수있는 유일한 이유는 다음과 같습니다.
다른 이유가 있습니까?
답변:
API 팽창이 아마도 답일 것입니다. 내 경험상이 기능이 필요한 유일한 시간은 대기열 또는 스택이 적절한 방법을 가진 작업에 대한 올바른 데이터 구조였습니다.
get(-1)
가 목록 끝에서 검색을 지원 하면 API 팽창을 추가하지 않고 OP가 원하는 것을 수행합니다. 그와 같은 나의 대답은 설명 할 수없는 다운 보트를 이끌어 냈습니다.
last()
방법만큼이나 쉽다 list.get(list.size()-1)
더이없는 것처럼, first()
방법 또는 fifth()
방법. 합성하기가 어렵지 않고 전문화되어 있습니다. 당신은 또한 reverse()
목록과 항목 list.get(0)
을 줄 것입니다 수 있습니다 last
. 수행하기 쉬운 것은 일반적으로 고유 한 방법을 얻지 못합니다.
import java.util.ArrayList;
import java.util.List;
public class Main
{
public static void main(String[] args)
{
final List<String> l = new ArrayList<String>();
l.add("A");
l.add("B");
l.add("Z");
System.out.println("l.get(0) = " + l.get(0));
System.out.println("l.get(l.size()-1) = " + l.get(l.size() - 1));
}
}
결과는 다음과 같습니다.
l.get(0) = A
l.get(l.size()-1) = Z
또한 List
인터페이스 를 구현하는 모든 것이 실제로 last()
어떤 개념을 가지고 있다고 가정하는 것도 전제 입니다.
.size()-1
구현할 수있는 완벽한 방법은 아니다 last()
같은 큰 목록이 매우 가능성이 있지만 (그리고 내가 어떻게 그런 목록을 궁금해 구현할 것입니다 toArray()
...)
기본적으로 당신이 중 하나를 요청해야 size()
A에 대한 for
반복자를 요청하고 한 동안 그것을 사용하거나 할 - 루프에 의해 -loop 또는 반복 처리 그것. 목적에 맞는 것을 사용하십시오.
반복자는 주어진 지점에서 더 많은 항목이 있는지 알고 있으며 다음 항목이 있으면 얻을 수 있습니다. 그런 다음 "더 많은 항목이 있습니까?"까지 반복하십시오. 실패합니다.
http://download.oracle.com/javase/tutorial/collections/interfaces/collection.html 의 "Traversing Collections"섹션을 참조하십시오.
collection.get(collection.size() - 1)
.