126 Stimmen

Java dynamische Array-Größen?

Ich habe eine Klasse - XClass, die ich in ein Array von XClasses laden möchte:

XClass myClass[] = new XClass[10];
myclass[0] = new XClass();
myclass[9] = new XClass();

Ich weiß jedoch nicht, ob ich 10, 8 oder 12 Klassen oder irgendeine andere Anzahl benötigen werde.
Ich werde es erst zur Laufzeit wissen.

Kann ich die Anzahl der Elemente in einem Array während der Laufzeit ändern?
Wenn ja, wie?

0 Stimmen

Ich habe das Format der Frage verbessert, du kannst nur den Titel ändern, wenn du möchtest, sei einfach beschreibend. und willkommen bei Stackoverflow! :D

0voto

wallace_stev Punkte 139

Hier ist eine Methode, die kein ArrayList verwendet. Der Benutzer gibt die Größe an und Sie können eine do-while-Schleife für die Rekursion hinzufügen.

import java.util.Scanner;
public class Dynamic {
    public static Scanner value;
    public static void main(String[]args){
        value=new Scanner(System.in);
        System.out.println("Geben Sie die Anzahl der Tests ein, um den Durchschnitt zu berechnen\n");
        int limit=value.nextInt();
        int index=0;
        int [] marks=new int[limit];
        float sum,ave;
        sum=0;      
        while(index

0voto

Jatin Chauhan Punkte 167

In Java Array-Groessen sind immer fest, aber es gibt einen Weg, auf dem Sie die Groesse des Arrays zur Laufzeit dynamisch erhoehen koennen.

Dies ist der am meisten "verwendete" und bevorzugte Weg, es zu tun-

    int temp[]=new int[stck.length+1];
    for(int i=0;i

``

In dem obigen Code initialisieren wir ein neues temp[] Array und verwenden dann eine For-Schleife, um die Inhalte von temp mit den Inhalten des Original-Arrays d.h. stck[] zu initialisieren. Und dann kopieren wir es wieder zurueck zum Original, um uns ein neues Array mit neuer Groesse zu geben.

Zweifellos erzeugt dies einen CPU-Overhead, da das Array mehrmals mittels einer Schleife neu initialisiert wird. Aber Sie koennen es immer noch in Ihrem Code verwenden und implementieren. Fuer die beste Praxis verwenden Sie anstatt des Arrays "Linked List", wenn Sie die Daten dynamisch im Speicher mit variabler Laenge speichern moechten.

Hier ist ein Echtzeitbeispiel basierend auf Dynamischen Stacks, um die ARRAY-GROESSE zur Laufzeit zu ERHOEHEN.

Dateiname: DStack.java

public class DStack {
private int stck[];
int tos;

void Init_Stck(int groesse) {
    stck=new int[groesse];
    tos=-1;
}
int Change_Stck(int groesse){
    return stck[groesse];
}

public void push(int element){
    if(tos==stck.length-1){
        int temp[]=new int[stck.length+1];
        for(int i=0;i

`

Dateiname: Exec.java
(mit der Hauptklasse)

import java.util.*;
public class Exec {

private static Scanner in;

public static void main(String[] args) {
    in = new Scanner(System.in);
    int option,element,i=1;
    DStack obj=new DStack();
    obj.Init_Stck(1);
    do{
        System.out.println();
        System.out.println("--MENUE--");
        System.out.println("1. Wert in den Stack einfuegen");
        System.out.println("2. Wert aus dem Stack nehmen");
        System.out.println("3. Stack anzeigen");
        System.out.println("4. Beenden");
        option=in.nextInt();
        switch(option){
        case 1:
            System.out.println("Geben Sie den Wert ein, der eingefuegt werden soll");
            element=in.nextInt();
            obj.push(element);
            break;
        case 2:
            System.out.println("Herausgenommenes Element: "+obj.pop());
            obj.Change_Stck(obj.tos);
            break;
        case 3:
            System.out.println("Anzeigen...");
            obj.display();
            break;
        case 4:
            System.out.println("Beenden...");
            i=0;
            break;
        default:
            System.out.println("Geben Sie einen gueltigen Wert ein");

        }
    }while(i==1);

}

}

Hoffentlich loest das Ihr Anliegen.

` ``

0voto

Chinthaka Devinda Punkte 849

Sie können etwas tun

private static Person[] addPersons(Person[] persons, Person personToAdd) {
    int currentLenght = persons.length;

    Person[] personsArrayNew = Arrays.copyOf(persons, currentLenght + 1);
    personsArrayNew[currentLenght] = personToAdd;

    return personsArrayNew;

}

0voto

shevalye Punkte 1

Sie können ein Array mit einer Variablen erstellen, die die Länge enthält. Wie zum Beispiel mit "new int[n]". Und übergeben Sie "n" dynamisch als Argument an die Methode. Sie können auch ein Array mit der maximalen Größe erstellen, die Sie möglicherweise benötigen. Und erstellen Sie auch eine Variable, um die aktuelle Größe zu verfolgen, abhängig davon, wie Sie es verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X