>  기사  >  Java  >  Java의 동적 배열

Java의 동적 배열

WBOY
WBOY원래의
2024-08-30 15:28:45957검색

Java의 동적 배열은 사용자 요구 사항에 따라 배열의 크기를 늘리거나 줄이는 것을 의미합니다. 배열에서 요소를 제거하는 동안 배열 크기는 줄어들어야 하며, 배열에 요소가 추가되면 배열 크기가 늘어납니다. 배열은 동질적인 요소를 저장하는 데 사용됩니다. 즉, 동일한 유형의 요소를 한 번에 저장할 수 있습니다.

Java의 동적 배열 선언

예: 정수, 부동 소수점 숫자, 이중 숫자, 문자열, 문자, 객체 등을 저장할 수 있지만 한 번에 특정 유형만 저장할 수 있습니다.

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

배열은 세 가지 방법으로 선언할 수 있습니다.

1. 배열[]

예:

int Array[]={1,2,4};

2. [] 배열

예:

int[] Array ={1,2,4};

3. []아

예:

int []Array ={1,2,4};

배열 요소는 어떻게 반복되나요?

배열 요소는 다음을 사용하여 반복됩니다.

  • For 루프
  • While 루프
  • 각 루프에 대해

배열을 동적으로 만드는 다른 대안이 있나요?

  • 예, Java 컬렉션을 사용하면 이를 달성할 수 있습니다.
  • 동적 배열의 경우 ArrayList 클래스를 사용할 수 있습니다.
  • Arraylist 크기는 사용자 작업에 따라 자동으로 늘리거나 줄일 수 있습니다.

일반 동적 배열에 비해 컬렉션 Arraylist의 장점은 무엇인가요?

  • 사용자 요구 사항에 따라 배열 크기를 늘리거나(늘리거나) 줄(줄일) 수 있지만 배열에서는 먼저 요소 추가, 요소 제거 등을 위한 사용자 지정 코드를 작성하여 일반 배열을 동적 배열로 만들어야 합니다.
  • 내부 Arraylist 구현은 배열 개념에만 적용됩니다.

Java에서 동적 배열은 어떻게 작동하나요?

  • 일반 배열을 동적 배열로 만들려면 요소 추가, 제거, 크기 및 용량 증가 및 감소 등을 위한 사용자 정의 로직을 작성해야 합니다.

구문:

class DynamicArray
{
addingElements()
{
//custom logic
}
addingElementsAtIndex(int index, int element)
{
//custom logic
}
removingElements()
{
//custom logic
}
removingElementsAtIndex(int index, int element)
{
//custom logic
}
increasingSize()
{
//custom logic
}
decreasingSize()
{
//custom logic
}
printArrayElements()
{
//custom logic
}
.
.
.
}
  • ArrayList 컬렉션에서는 사용자 정의 로직을 작성할 필요가 없습니다. 요소 추가, 제거, 크기 및 용량 가져오기, 인덱스 기반 요소 가져오기, 인덱스 기반 요소 제거 등을 위한 모든 사용자 정의 방법을 제공합니다.

구문:

class ArrayListLogic
{
List<Generic Type> list=new ArrayList<Generic Type>();
list.add();
list.remove(index,element);
.
.
.
}

Java의 동적 배열 예

아래는 Java의 동적 배열의 예입니다.

예시 #1

배열에 요소를 추가하고 크기와 용량을 동적으로 늘립니다.

코드:

package com.dynamicarray;
import java.util.Arrays;
public class DynamicArray {
// declaring an array
int myArray[];
// stores the present size of the array
int sizeOfMyArray;
// stores total capacity of an array
int arrayCapacity;
// initializing array, size and capacity
public DynamicArray() {
myArray = new int[2];
sizeOfMyArray = 0;
arrayCapacity = 2;
}
// method for adding elements
public void addElementsToArray(int element) {
// makes the capacity double if all the array elements filled
if (sizeOfMyArray == arrayCapacity) {
increaseCapacity(2);
}
myArray[sizeOfMyArray] = element;
sizeOfMyArray++;
}
// method for adding elements to specific position
public void addElementAtPosition(int position, int value) {
// makes the capacity double if all the array elements filled
if (sizeOfMyArray == arrayCapacity) {
increaseCapacity(2);
}
// shifting array elements
for (int p = sizeOfMyArray - 1; p >= position; p--) {
myArray[p + 1] = myArray[p];
}
// adding the element at specific position
myArray[position] = value;
sizeOfMyArray++;
}
// method for getting the element from specific position
public int getElementAtposition(int position) {
return myArray[position];
}
// method for increasing capacity if all the elements in an array filled
public void increaseCapacity(int minimumCapacity) {
int temp[] = new int[arrayCapacity * minimumCapacity];
for (int p = 0; p < arrayCapacity; p++) {
temp[p] = myArray[p];
}
myArray = temp;
arrayCapacity = arrayCapacity * minimumCapacity;
}
// method for array current size
public int displaySize() {
return sizeOfMyArray;
}
// method for array total capacity
public int displayCapacity() {
return arrayCapacity;
}
// method for display all elements
public void displayArrayElements() {
System.out.println("elements in array are :" + Arrays.toString(myArray));
}
public static void main(String[] args) {
DynamicArray array = new DynamicArray();
System.out.println("===================================================================");
System.out.println("Inital array size " + array.displaySize() + " and initial capacity " + array.displayCapacity());
System.out.println("===================================================================");
// adding elements at index 0 and 1
array.addElementsToArray(10);//line 1
array.addElementsToArray(20);//line 2
System.out.println("Size of myArray =>" + array.displaySize() + " and Capacity :" + array.displayCapacity());
array.addElementsToArray(30); //line 3
System.out.println("Size of myArray =>" + array.displaySize() + " and Capacity :" + array.displayCapacity());
array.displayArrayElements(); //line 4
// adding element at index 1
array.addElementAtPosition(1, 50);
System.out.println("Size of myArray =>" + array.displaySize() + " and Capacity :" + array.displayCapacity());
array.displayArrayElements();
// adding element at index 2
array.addElementAtPosition(2, 60);
System.out.println("Size of myArray =>" + array.displaySize() + " and Capacity :" + array.displayCapacity());
array.displayArrayElements();
}
}

출력:

Java의 동적 배열

설명:

  • 라인 1과 라인 2에 2개의 요소가 추가되었습니다. 그 후 3번째 줄에 요소를 하나 더 추가하려고 하는데 배열의 초기 용량은 2개뿐입니다.
  • 세 번째 요소를 삽입하려고 하면 배열 용량이 4로 늘어납니다(용량=2*초기 크기 지정).
  • 따라서 세 번째번째 요소도 추가할 수 있습니다.
  • 4번째 줄에는 배열 요소가 모두 표시되었습니다.

예시 #2

  • 배열에서 요소를 제거하고 크기와 용량을 동적으로 줄입니다.
  • 이 예는 위 예의 연속입니다.

코드:

package com.dynamicarray;
import java.util.Arrays;
public class DynamicArray {
// declaring an array
int myArray[];
// stores the present size of the array
int sizeOfMyArray;
// stores total capacity of an array
int arrayCapacity;
// initializing array, size and capacity
public DynamicArray() {
myArray = new int[2];
sizeOfMyArray = 0;
arrayCapacity = 2;
}
// method for adding elements
public void addElementsToArray(int element) {
// makes the capacity double if all the array elements filled
if (sizeOfMyArray == arrayCapacity) {
increaseCapacity(2);
}
myArray[sizeOfMyArray] = element;
sizeOfMyArray++;
}
// method for adding elements to specific position
public void addElementAtPosition(int position, int value) {
// makes the capacity double if all the array elements filled
if (sizeOfMyArray == arrayCapacity) {
increaseCapacity(2);
}
// shifting array elements
for (int p = sizeOfMyArray - 1; p >= position; p--) {
myArray[p + 1] = myArray[p];
}
// adding the element at specific position
myArray[position] = value;
sizeOfMyArray++;
}
// method for getting the element from specific position
public int getElementAtposition(int position) {
return myArray[position];
}
// method for removing elements
public void removeAtPosition(int position) {
if (position >= sizeOfMyArray || position < 0) {
System.out.println("Opps!No elements found " + position + " position");
} else {
for (int p = position; p < sizeOfMyArray - 1; p++) {
myArray[p] = myArray[p + 1];
}
myArray[sizeOfMyArray - 1] = 0;
sizeOfMyArray--;
}
}
// method for increasing capacity if all the elements in an array filled
public void increaseCapacity(int minimumCapacity) {
int temp[] = new int[arrayCapacity * minimumCapacity];
for (int p = 0; p < arrayCapacity; p++) {
temp[p] = myArray[p];
}
myArray = temp;
arrayCapacity = arrayCapacity * minimumCapacity;
}
// method for make an array size to initial size
public void makeInitialSize() {
System.out.println("Making an array to initial size");
int temp[] = new int[sizeOfMyArray];
for (int q = 0; q < sizeOfMyArray; q++) {
temp[q] = myArray[q];
}
myArray = temp;
arrayCapacity = myArray.length;
}
// method for array current size
public int displaySize() {
return sizeOfMyArray;
}
// method for array total capacity
public int displayCapacity() {
return arrayCapacity;
}
// method for display all elements
public void displayArrayElements() {
System.out.println("elements in array are :" + Arrays.toString(myArray));
}
public static void main(String[] args) {
DynamicArray array = new DynamicArray();
System.out.println("===================================================================");
System.out.println("Inital array size " + array.sizeOfMyArray + " and initial capacity " + array.arrayCapacity);
System.out.println("===================================================================");
array.addElementsToArray(10);
array.addElementsToArray(20);
array.addElementsToArray(30);
array.addElementsToArray(40);
array.displayArrayElements();
array.removeAtPosition(2);
System.out.println("Size after Remove Operation=>" + array.displaySize() + " and Capacity :"
+ array.displayCapacity());
array.displayArrayElements();
array.removeAtPosition(2);
System.out.println("Size after Remove Operation=>" + array.displaySize() + " and Capacity :"
+ array.displayCapacity());
array.displayArrayElements();
array.removeAtPosition(1);
System.out.println("Size after Remove Operation=>" + array.displaySize() + " and Capacity :"
+ array.displayCapacity());
array.displayArrayElements();
array.removeAtPosition(2);
System.out.println("Size after Remove Operation =>" + array.displaySize() + " and Capacity :"
+ array.displayCapacity());
array.displayArrayElements();
array.removeAtPosition(1);
System.out.println("Size after Remove Operation =>" + array.displaySize() + " and Capacity :"
+ array.displayCapacity());
array.displayArrayElements();
// Make the array to initial size
array.makeInitialSize();
System.out.println(" After trimming Size of myArray =>" + array.displaySize() + " and Capacity :"
+ array.displayCapacity());
array.displayArrayElements();
array.addElementsToArray(-5);
System.out.println("After trimming Size of myArray =>" + array.displaySize() + " and Capacity :"
+ array.displayCapacity());
array.displayArrayElements();
array.addElementsToArray(-6);
System.out.println("After trimming Size of myArray =>" + array.displaySize() + " and Capacity :"
+ array.displayCapacity());
array.displayArrayElements();
}
}

출력:

Java의 동적 배열

예시 #3

ArrayList를 사용한 동적 배열.

코드:

package com.dynamicarray;
import java.util.ArrayList;
import java.util.List;
public class ArrayListDynamic {
public static void main(String[] args) {
List<Integer> list=new ArrayList<Integer>();
list.add(10);
list.add(20);
list.add(30);
list.add(40);
System.out.println("Adding the elements ArrayList =>"+list);
System.out.println("Adding the elements ArrayList size =>"+list.size());
/*Array List capacity formula newCapacity = (oldCapacity * 3/2) + 1*/
list.add(4, 50);
System.out.println("After adding the element at specific index =>"+list+" and size "+list.size());
list.remove(4);
list.remove(3);
System.out.println("After removing the elements =>"+list+" and size "+list.size());
}
}

출력:

Java의 동적 배열

결론

일반적인 동적 배열에서는 구현 개발자가 사용자 정의 로직을 작성해야 하지만 ArrayList 컬렉션에서는 사전 정의된 모든 메소드를 사용할 수 있으므로 사용자 정의 로직을 작성할 필요가 없습니다.

위 내용은 Java의 동적 배열의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:Java의 연관 배열다음 기사:Java의 연관 배열