Tres preguntillas sobre arrays

Iniciado por cointreau, 11 Abril 2012, 02:54 AM

0 Miembros y 1 Visitante están viendo este tema.

cointreau

Buenas, estoy empezando con java y me han mandado una práctica que no consigo resolver debido a estas tres preguntas a las que no encuentro respuesta:

¿Cómo sé si un objeto concreto está en un array?

¿Cómo elimino un objeto concreto en un array?

¿Cómo añado un elemento a un array?

Si alguien sabe, por favor le agradecería que me lo dijera con algún ejemplillo que lo veo bastante más claro, un saludo

KuraraGNU

#1
Cita de: cointreau en 11 Abril 2012, 02:54 AM
¿Cómo sé si un objeto concreto está en un array?

Haces un for que recorra todos los indices del array desde el 0 hasta ArrayList.size() -1 (He usado la clase ArrayList, si quieres usar la clase Array busca aqui pero te recomiendo leerte como funciona el ArrayList, sino puedes simplemente crear un array con tipo[longitud]) y lo comparas con el objeto a buscar, pero ojo, no con el objeto en si, porque sino comparas dos direcciones de memoria que nunca van a ser iguales, tienes que usar un metodo que sea una propiedad del array, por ejemplo si es un array de perros tendrias que usar perros[X].raza() == "razaBuscada" Si hay varios objetos con el mismo nombre pues ya averiguatelas tú, guarda los resultados en otro array y luego de ese array vuelves a comparar por otro metodo, haz if encadenados etc. Ya a gusto de cada uno es eso.

Cita de: cointreau en 11 Abril 2012, 02:54 AM¿Cómo elimino un objeto concreto en un array?

¿Cómo añado un elemento a un array?

A todas estas preguntas hay respuestas aqui: (Método add() remove()...)
http://docs.oracle.com/javase/7/docs/jdk/api/javadoc/doclet/index.html?com/sun/javadoc/package-summary.html Si usas el tipo variable[] nombre entonces añadir y borrar datos es más complejo porque primero tienes que poner a null el valor de la posicion y luego redimensionar el array, en fin, no me acuerdo bien como funcionaba y tendría que estar programando para verlo, pero si usas el ArrayList es como un Object[] nombre, porque es un array de objects.
Si me dices exactamente cual quieres usar yo te doy más datos (poniendo links a explicaciones, claro :D)

adastra

Si utilizas arrays "a pelo" todas las operaciones que has indicado anteriormente las haces de forma manual como te han indicado anteriormente, sin embargo en Java  el Collections Framework te permite manipular listas y arrays de una forma muy fina, por ejemplo usando clases como Arrays y Collections puedes realizar muchas de las operaciones comunes sobre listas simples (arrays) Mapas y listas doblemente enlazadas. Todas estas clases se encuentran en la distribución estandar de Java en el paquete "java.util". Reviza los JavaDocs disponibles.

cointreau

Cita de: KuraraGNU en 11 Abril 2012, 10:11 AM
Haces un for que recorra todos los indices del array desde el 0 hasta ArrayList.size() -1 (He usado la clase ArrayList, si quieres usar la clase Array busca aqui pero te recomiendo leerte como funciona el ArrayList, sino puedes simplemente crear un array con tipo[longitud]) y lo comparas con el objeto a buscar, pero ojo, no con el objeto en si, porque sino comparas dos direcciones de memoria que nunca van a ser iguales, tienes que usar un metodo que sea una propiedad del array, por ejemplo si es un array de perros tendrias que usar perros[X].raza() == "razaBuscada" Si hay varios objetos con el mismo nombre pues ya averiguatelas tú, guarda los resultados en otro array y luego de ese array vuelves a comparar por otro metodo, haz if encadenados etc. Ya a gusto de cada uno es eso.

A todas estas preguntas hay respuestas aqui: (Método add() remove()...)
http://docs.oracle.com/javase/7/docs/jdk/api/javadoc/doclet/index.html?com/sun/javadoc/package-summary.html Si usas el tipo variable[] nombre entonces añadir y borrar datos es más complejo porque primero tienes que poner a null el valor de la posicion y luego redimensionar el array, en fin, no me acuerdo bien como funcionaba y tendría que estar programando para verlo, pero si usas el ArrayList es como un Object[] nombre, porque es un array de objects.
Si me dices exactamente cual quieres usar yo te doy más datos (poniendo links a explicaciones, claro :D)

Muchísimas gracias, la primera pregunta me la has resuelto.. las dos segundas se me olvidó especificar que no son arrayList sino arrays de este tipo variable[] . Busque en la API de java para hacerlo como los arrayList pero no encontré ningún método para añadir o eliminar. Si no recuerdas cómo era no pasa nada, me has ayudado ya suficiente y creo que podré sacarlo. Por si acaso lo recuerdas te explico cómo serían los métodos que tengo que hacer:
-Añadir:
un array de 5 elementos como máximo, añadir un elemento al array, da igual en qué posición y, si está lleno en array pues eliminar el elemento con mayor valor y meter el que queremos.
-Eliminar:
Lo mismo, un array de 5 elementos como mucho, eliminar el objeto del array que nosotros le pedimos.
No te pongo mi código porque me gusta aprender a hacerlo yo y me parece mal que me resuelvan cosas que yo tengo que hacer.
De antemano, muchísimas gracias por la ayuda a los dos que me han respondido, un saludo ;)

KuraraGNU

Cita de: cointreau en 11 Abril 2012, 12:17 PMBusque en la API de java para hacerlo como los arrayList pero no encontré ningún método para añadir o eliminar. Si no recuerdas cómo era no pasa nada, me has ayudado ya suficiente y creo que podré sacarlo. Por si acaso lo recuerdas te explico cómo serían los métodos que tengo que hacer:

Te dije (aunque no lo remarqué por eso quizás no te diste cuenta): .add() y .remove() están ahí en la API.

Si tienes que hacerlo de la otra forma (que si es para trabajo de clase te obligan a aprender también esa aunque luego no se use tanto) entonces si es un coñazo, pero hay que hacer lo que dije, borrar el valor (volcar lo que queda a un array temporal) y luego redimensionar el array, porque sigues teniendo el hueco aunque esté vacío. Para añadir tienes que volcar los datos a otro array, redimensionar el viejo y volverle a pasar los datos que tenías en la array temporal. El método add() y remove() te autoredimensiona ya las cosas automáticamente.

cointreau

Cita de: KuraraGNU en 11 Abril 2012, 13:13 PM
Te dije (aunque no lo remarqué por eso quizás no te diste cuenta): .add() y .remove() están ahí en la API.

Si tienes que hacerlo de la otra forma (que si es para trabajo de clase te obligan a aprender también esa aunque luego no se use tanto) entonces si es un coñazo, pero hay que hacer lo que dije, borrar el valor (volcar lo que queda a un array temporal) y luego redimensionar el array, porque sigues teniendo el hueco aunque esté vacío. Para añadir tienes que volcar los datos a otro array, redimensionar el viejo y volverle a pasar los datos que tenías en la array temporal. El método add() y remove() te autoredimensiona ya las cosas automáticamente.

Sí me di cuenta, pero que en la API según probé los métodos .add() y .remove() me di cuenta de que no eran para el tipo de arrays que estoy usando sino para los arrayLists que aún no he tocado. De todas formas el procedimiento que me acabas de decir creo que servirá, usando arrays temporales no se me había ocurrido. Muchísimas gracias por todo y perdón por las molestias, un saludo

KuraraGNU

De nada hombre, es lo que hacía yo en el curso ^_^

1mpuls0

Puedes utilizar las siguientes clases y objetos.

ArrayList lista = new ArrayList();
List<String> lista = new ArrayList<String>();
String lista[] = new String[5];
List lista= new List(5);

Depende de como lo vayas a utilizar.

Saludos.
abc