2010-10-08 35 views
16

Quiero hacer una pregunta acerca de Java. Tengo una clase de objeto definida por el usuario, estudiante, que tiene 2 miembros de datos, nombre e id. Y en otra clase, tengo que declarar ese objeto [], (por ejemplo, student stu[?];). Sin embargo, no sé el tamaño de la matriz de objetos. ¿Es posible declarar una matriz de objetos pero no conoce el tamaño? gracias.¿Cómo declarar una matriz de objetos dinámicos en Java?

Respuesta

17

Usuario ArrayList en su lugar. Se expandirá automáticamente a medida que agregue nuevos elementos. Más tarde puede convertirlo en matriz, si lo necesita.

Como otra opción (no estoy seguro de qué es exactamente lo que quiere), puede declarar el campo Object[] y no inicializarlo inmediatamente.

+1

-1: Sin código de ejemplo. Prefiero esta respuesta porque ponen un poco de esfuerzo y realmente dieron suficiente información que no requería más búsquedas después de leer su respuesta: http://stackoverflow.com/a/3887507/901641 – ArtOfWarfare

20

Como probablemente ya haya descubierto, las matrices normales en Java son de tamaño fijo (no se puede cambiar el tamaño de una matriz), por lo que para agregar elementos dinámicamente a una matriz, necesita una matriz redimensionable. En Java, las matrices de tamaño variable se implementan como la clase ArrayList (java.util.ArrayList). Un simple ejemplo de su uso:

import java.util.ArrayList; 

// Adds a student to the student array list. 
ArrayList<Student> students = new ArrayList<Student>(); 
students.add(new Student()); 

Los <Student> corchetes (una característica llamada genéricos en Java) son opcionales; sin embargo, debes usarlos. Básicamente restringen el tipo de objeto que puedes almacenar en la lista de arreglos, por lo que no terminas almacenando objetos String en una matriz llena de objetos enteros.

+0

Las matrices en Java no son inmutable. Puede hacer fácilmente 'myArray [2] = 13', cambiando así la matriz. ¿Quizás quisiste decir que su tamaño no se puede cambiar? –

+0

Sí, eso es lo que quise decir, gracias por aclarar eso. Lo aclararé en mi respuesta. – agentbanks217

0

Puede declarar como: Student stu[]=null;, y crearlo con tamaño fijo: stu[]=new Student[10] hasta que pueda conocer el tamaño. Si tiene que usar matriz.

1

No es posible, debemos especificar el tamaño de la matriz al declarar la matriz de objetos;

  1. una forma de declarar matriz de objetos

    student st[]; 
    st=new student[]3; 
    
  2. segunda forma

    student st[]=new student[5]; 
    

en ambos casos no se crean objetos sólo el espacio se asigna para la matriz.

st=new student[1]; 

esto creará un nuevo objeto;

+0

si el estudiante es una clase debe llamar a Student con Capital S. –

Cuestiones relacionadas