2013-03-01 2 views
0

Java에서 Integer 유형의 arraylist를 만들 때 기본값은 무엇입니까? arraylist가 가득 차 있는지 확인해야하고 배열의 크기를 얻은 다음 마지막 인덱스에서 값을 가져 와서 기본값인지 확인해야합니다.Java - ArrayList 기본 초기 값

더 좋은 방법이 있습니까? 기본값은 무엇입니까?

희망이 있습니다. 건배

int size = a.size(); 
int last = a.get(size); 
if(last == null) 
{ 
    return true; 
}else{ 
    return false; 
} 

편집;

은 당신이 동적 확장을 정지로 갈 수있는 최대 크기의 ArrayList를을 만들 수 있습니까? ArrayList를 만들고 size()를 사용하면 arraylist의 실제 크기 나 요소의 양이 반환됩니까? 이 작업을 수행하여 최대 크기를 만들면 기본값은 null이됩니까?

public boolean isFull() 
{ 
    int size = a.size(); 
    int last = 0; 
    try{ 
     last = a.get(size-1); 
    }catch (Exception e){ 
    } 
    if(last == null) 
    { 
     return true; 
    }else{ 
     return false; 
    } 
} 

현재이 사진은 어떻게 표시됩니까? 이게 지금 말이 되니?

+1

배열,'java.util.ArrayList' 또는 다른 것을 사용하고 있습니까? –

+1

ArrayList는 절대로 "가득 참"이 아닙니다. 기본값도 없으며 기본값은 목록이 "비어 있음"입니다. 귀하의 질문은 말이되지 않습니다. – Durandal

+0

AaronKurtzhals 예 util arraylists입니다. @Durandal, 아 맞아. 나는 그것에 대해 잊어 버렸습니다. 이 배열은 올바른 구현일까요? – Kyle93

답변

5

ArrayList를 선언 할 때 비어 있습니다. 또한 동적 컨테이너이기 때문에 커질 것입니다. 그렇기 때문에 "가득"했는지 묻는 것은 코드에 추가해야하는 제약입니다.

그래서, 당신이 설명하는 것처럼 목표를 달성하고 싶다면.

List<Integer> list = new ArrayList<Integer>(10); 

당신은 가치있는 모든 것을 null 큰 10 개 요소의 목록이있을 것이다 : 당신은 같은 미리 설정된 크기 목록을 생성하는 경우 다른 사람이하지만 언급했듯이

List<Integer> list = new ArrayList<Integer>(); 
int MAX_ELEMENTS = 5; //Set this to however you want to constrain the datatype 

public boolean addElement(Integer value) { 
    if (list.size() < MAX_ELEMENTS) { 
    list.add(value); 
    return true; 
    } else { 
    return false; 
    } 
} 

public boolean isFull() { 
    return (list.size() == MAX_ELEMENTS); 
} 

public Integer getLast() { 
    if (!list.isEmpty()) 
    return list.get(list.size()-1); 
    else 
    return null; 
} 

. 추가 요소를 추가해야한다면 위와 같이 제한하지 않는 한 목록은 여전히 ​​10 개 요소보다 커집니다.

+0

내가 본래의 아이디어에 대답 할 수있어서 가장 좋은 대답으로 선정되었습니다. – Kyle93

1

"가득"같은 것이 없습니다 ArrayList. size() 메서드는 현재 보유하고있는 요소의 수를 반환합니다.

+0

우리는 실제로 그것을 'null'로 간주합니까? 나는 객체가 없으므로 기본값이 없다고 말할 것이다. –

+0

초기 크기가 10 인 ArrayList를 만든 다음 3 개의 값을 추가했습니다. 크기는 여전히 10이 아닌 3 일 것입니까? – Kyle93

+0

아니요, 크기는 3이됩니다. 새 ArrayList를 작성할 때 (10); 10은 초기 용량이 아니라 초기 용량입니다. –

2

ArrayList를 만들 때 ArrayList 클래스 내에 요소 배열이 있습니다. 이러한 요소는 Integer 객체의 인스턴스를 참조하지 않기 때문에 null로 설정됩니다. 맨 처음에는 int와 같지 않습니다.

또한 ArrayList가 가득차 지 않습니다. 그것은 역동적이고 필요할 때 크기가 커집니다.

편집 : 당신이 다음 최대 크기를 원하는 경우 ArrayList에를 싶어 왜 최대 크기를 설정하는 방법에 대한 귀하의 편집에 대한 응답으로, 나는 확실하지 않다. 그러나 ArrayList 클래스를 고수하고 싶다면 arraylist의 하위 클래스 인 자체 클래스를 만들고 size()의 값이 고정 된 값을 초과하지 않는지 확인하기 위해 add 메서드를 재정의합니다.

+0

'size()'는 구현에 관계없이 내용의 논리적 인 표시 자다. 그것이 '0'이면, '아무것도'가 없다. 당신이 말하는 그 요소들은 접근 할 수 없으므로 존재하지 않습니다. – UmNyobe

+0

예. 나는 size()의 가치가 증가 할 것이라고 말하지 않았다. 어레이 자체의 크기가 커질 것이라고 말했다. – christopher

3

실제로 Integer을 ArrayList에 추가하지 않은 경우 목록의 get()IndexOutOfBoundsException을 반환합니다.

size() 방법은 목록 (즉, 당신이 그것에 추가 얼마나 많은)이 아닌 전류 용량의 요소 수를 반환합니다.

+0

감사합니다. 나는 그것을 잊어 버렸습니다. 나는 지금 그것을 구현에 포함시킬 것이다! – Kyle93

0

ArrayLists에는 기본값이 없습니다. 초기화시 ArrayList에 initialCapacity을 지정하면 기본 배열의 크기에 대한 힌트 만 제공됩니다.하지만 직접 항목을 추가 할 때까지는 ArrayList의 값에 실제로 액세스 할 수 없습니다.

0

모든 목록 구현은 당신이 사용할 수있는 isEmpty() 방법이있다.

1

목록을 주어진 크기로 제한 하시겠습니까, 아니면 주어진 크기보다 큰지 확인하고 싶습니까? 목록보다 큰 경우

확인 : - :

public class LimitedList<E> extends ArrayList<E> { 

    private int limit; 

    public LimitedList(int limit) { 
     this.limit = limit; 
    } 

    public boolean add(E e) { 
     // only add if the limit is not exceeded 
     if (size() < limit) 
      super.add(e); 
    } 

    // overwriting the addAll()-methods is left as an excercise to the reader 
} 

ArrayList에의 크기를 제약 조건을

if (list.size() > limit) 
    System.out.println("List too large"); 

그것의 불가능 당신은하지만 그냥하지 ArrayList에 당신의 자신의 서브 클래스를 생성 할 수 있습니다 한도가 허용하는 것보다 많은 요소를 추가하려고 할 때 목록에서 수행 할 작업을 결정하면됩니다. 요소를 무시하거나 Exception을 던지십시오.

1

기본적으로 ArrayList 용량은 10입니다. 요소를 추가 할 때까지는 모두 기본적으로 null입니다. 그러나 size()를 호출하면 추가 한 요소의 수를 얻을 수 있습니다. 결과로 10을주지는 않을 것입니다 (기본 null 값은 고려되지 않습니다). 여기서 트위스트는 null 값을 목록에 추가하면 size()를 계산하는 동안 포함됩니다. 예제 3 개의 유효한 정수와 2 개의 null 값을 목록에 추가하면 size()는 5를 반환합니다. 이클립스 디버깅은 용량의 동적 증가를 찾는 데 도움이됩니다.