프로그램 실행을 통해 크기와 값이 변경되도록 정수 배열을 초기화하는 방법에 대해 궁금합니다. 제안 사항이 있습니까?
프로그램 실행을 통해 크기와 값이 변경되도록 정수 배열을 초기화하는 방법에 대해 궁금합니다. 제안 사항이 있습니까?
답변:
예 : ArrayList를 사용 합니다.
Java에서 "일반"배열은 고정 크기입니다. 크기를 지정해야하며 확장하거나 축소 할 수 없습니다. 크기를 변경하려면 새 어레이를 만들고 원하는 데이터를 복사해야합니다. 이는 비효율적이고 고통 스럽습니다.
다행히도 일반적인 데이터 구조를 구현하는 모든 종류의 내장 클래스와 기타 유용한 도구도 있습니다. 전체 목록을 보려면 Java 6 API 를 확인 해야합니다.
한 가지주의 사항 : ArrayList는 기본 요소 (예 : 정수)가 아닌 개체 (예 : 정수) 만 포함 할 수 있습니다. 대부분의 경우 autoboxing / autounboxing은이 문제를 자동으로 처리하지만 수행중인 작업에 따라 이상한 동작이 발생할 수 있습니다.
size
프로그램이 진행될 때 일치하도록 크기를 변경하지 않습니다 . size
해당 라인이 실행될 때 발생하는 크기를 가져옵니다 .
null
됩니다. 이유는 무엇입니까?
Java의 배열은 고정 된 크기입니다. 필요한 것은 Java에서 사용할 수있는 매우 중요한 컬렉션 중 하나 인 ArrayList입니다.
대신에
Integer[] ints = new Integer[x]
너는 사용한다
List<Integer> ints = new ArrayList<Integer>();
그런 다음 사용 목록을 변경 ints.add(y)
하고 ints.remove(z)
다른 많은 편리한 방법 사이에 적절한 Javadoc과에서 찾을 수 있습니다.
Java에서 사용할 수있는 Collections 클래스는 매우 강력하고 Java 초보자가 불필요하게 다시 작성하려고하는 많은 내장 기능을 제공하므로 공부하는 것이 좋습니다.
List<Integer>
대신 왜 사용 ArrayList<Integer>
합니까?
배열은 인스턴스화되면 고정 크기입니다. 대신 목록을 사용할 수 있습니다.
Autoboxing은 List를 배열과 유사하게 사용 가능하게 만들고, 단순히 int- 값을 넣을 수 있습니다 :
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
나는 이전의 대답이 제안에 동의 ArrayList
하기 때문에, ArrayList
입니다 하지 동적 배열 있지만 목록은 배열에 근거. 차이점은 다음을 수행 할 수 없다는 것입니다.
ArrayList list = new ArrayList(4);
list.put(3,"Test");
지원 배열이 그러한 추가를 허용하더라도 아직이 위치에 요소가 없기 때문에 IndexOutOfBoundsException을 제공합니다. 따라서 @ randy-lance가 제안한대로 확장 가능한 사용자 지정 배열 구현을 사용해야합니다.
Simple code for dynamic array. In below code then array will become full of size we copy all element to new double size array(variable size array).sample code is below
public class DynamicArray {
static int []increaseSizeOfArray(int []arr){
int []brr=new int[(arr.length*2)];
for (int i = 0; i < arr.length; i++) {
brr[i]=arr[i];
}
return brr;
}
public static void main(String[] args) {
int []arr=new int[5];
for (int i = 0; i < 11; i++) {
if (i<arr.length) {
arr[i]=i+100;
}
else {
arr=increaseSizeOfArray(arr);
arr[i]=i+100;
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println("arr="+arr[i]);
}
}
}
출처 : 동적 배열을 만드는 방법
나는이 질문에 대답했고 당신은 arraylist 나 다른 어떤 것이 필요하지 않습니다. 이것은 할당이었고 나는 그것을 완료했습니다. 그래야 배열의 크기가 커질 수 있습니다. 여기에 Java Dynamic Array 사용 방법 링크가 있으며 여기에 Java Dynamic Arrays 에 대한 내 질문에 대한 링크가 있습니다.
int[] array = new int[size];
size
? 내가 바로 @Lord Torgamus 오전, 변수가 있지만, 배열의 길이는 고정되어 있어야합니다