Array List - 인덱스가 존재하는지 확인하려면 어떻게 해야 합니까?
사용하고 있다ArrayList<String>
특정 인덱스에 데이터를 추가하는데, 특정 인덱스가 존재하는지 어떻게 확인할 수 있나요?
간단하게 할까요?get()
값을 확인하시겠습니까?아니면 예외를 기다려야 하나요?다른 방법이 없나요?
업데이트: 답변 감사합니다만, 저는 특정 인덱스에만 내용을 추가하고 있기 때문에 목록 길이에 사용할 수 있는 항목이 표시되지 않습니다.
방법arrayList.size()
목록의 항목 수를 반환합니다. 즉, 인덱스가 다음 값보다 크거나 같은 경우size()
,그것은 존재하지 않는다.
if(index >= myList.size() || index < 0){
//index does not exists
}else{
// index exists
}
선형 엔트리가 있는 목록에 사용할 수 있는 목록의 크기를 사용하는 데 대한 수십 가지 제안을 받았지만 아무도 질문을 읽지 않은 것 같습니다.
다른 인덱스에 수동으로 항목을 추가하는 경우 특정 인덱스를 확인해야 하므로 이러한 제안 중 아무 것도 작동하지 않습니다.
if ( list . get ( index ) == null )를 사용해도 동작하지 않습니다.get()은 null을 반환하는 대신 예외를 발생시키기 때문입니다.
이것을 시험해 보세요.
try {
list.get( index );
} catch ( IndexOutOfBoundsException e ) {
list.add( index, new Object() );
}
인덱스가 존재하지 않는 경우 여기에 새 항목이 추가됩니다.다른 방법으로 변경할 수 있습니다.
이게 당신이 필요한...
public boolean indexExists(final List list, final int index) {
return index >= 0 && index < list.size();
}
밋밋한 오래된 어레이를 사용하면 어떨까요?목록에 대한 색인화된 액세스는 코드 냄새라고 생각합니다.
보통 인덱스가 배열 크기보다 작은지 확인합니다.
if (index < list.size()) {
...
}
인덱스가 음수 값인 경우에도 다음을 사용하십시오.
if (index >= 0 && index < list.size()) {
...
}
이것은 Kotlin 개발자를 위한 것입니다.
if (index in myList.indices) {
// index is valid
}
기타 솔루션:
if (index in 0..myArray.lastIndex) {
// index is valid
}
if (index >= 0 && index <= myList.lastIndex) {
// index is valid
}
// Note: elements of the list should be non-null
if (myList.getOrNull(index) != null) {
// index is valid
}
// Note: elements of the list should be non-null
myList.getOrNull(index)?.let { element ->
// index is valid; use the element
}
업데이트에 대해서(아마도 다른 질문일 것입니다)ArrayList 대신 이러한 오브젝트의 배열을 사용해야 합니다.이것에 의해, null 값을 간단하게 확인할 수 있습니다.
Object[] array = new Object[MAX_ENTRIES];
..
if ( array[ 8 ] == null ) {
// not available
}
else {
// do something
}
베스트 프랙티스
어레이에 100개의 엔트리가 없는 경우 매직넘버 3,8 등을 삭제하는 클래스로 구성하는 것을 검토해 주십시오.
예외를 사용한 흐름 제어는 잘못된 관행입니다.
Java 9에서는 인덱스가 배열에 속해 있는지 여부를 확인하는 표준 방법이 있습니다.Objects#checkIndex():
List<Integer> ints = List.of(1,2,3);
System.out.println(Objects.checkIndex(1,ints.size())); // 1
System.out.println(Objects.checkIndex(10,ints.size())); //IndexOutOfBoundsException
의 크기를 확인할 수 있습니다.ArrayList
사용방법size()
방법.그러면 최대 인덱스 +1이 반환됩니다.
어레이 크기를 확인할 수 있습니다.
package sojava;
import java.util.ArrayList;
public class Main {
public static Object get(ArrayList list, int index) {
if (list.size() > index) { return list.get(index); }
return null;
}
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(""); list.add(""); list.add("");
System.out.println(get(list, 4));
// prints 'null'
}
}
인덱스의 존재 여부에 대한 빠르고 더러운 테스트.테스트 중인 목록과 함께 구현 교체 목록에 있습니다.
public boolean hasIndex(int index){
if(index < list.size())
return true;
return false;
}
또는 2Dimensional Array Lists의 경우...
public boolean hasRow(int row){
if(row < _matrix.size())
return true;
return false;
}
간단한 방법:
try {
list.get( index );
}
catch ( IndexOutOfBoundsException e ) {
if(list.isEmpty() || index >= list.size()){
// Adding new item to list.
}
}
색인이 null
더 를 더하다, 지수를 더하다, 지수를 더하다, 지수를 더 크게 하다, 지수를 더하다, 지수를 더 크게 하면 .ensureCapacity()
그 지표를 사용할 수 있게 되었습니다.
인덱스의 값이 다음 값인지 확인하려는 경우null
않으면, 「」를 해 주세요.get()
Scanner input = new Scanner(System.in);
System.out.println("Enter the index to check");
int i = input.nextInt();
if (i > tasksList.size() || i < 0 ){
System.out.println("invalid input");
}else {
//your code
}
언급URL : https://stackoverflow.com/questions/2131802/arraylist-how-can-i-check-if-an-index-exists
'programing' 카테고리의 다른 글
JavaScript에서 IE 버전(v9 이전)을 검출하다 (0) | 2023.02.02 |
---|---|
최소/최대와 주문 기준 및 제한 (0) | 2023.02.02 |
롬복 빌더에서 부동산을 제외하려면 어떻게 해야 합니까? (0) | 2023.02.02 |
FIND_IN_SET() vs IN() (0) | 2023.02.02 |
vue 앱에서 처음 로드한 후 다이내믹 PixiJ 캔버스가 잘못됨 (0) | 2023.02.02 |