Estoy tratando de agregar, quitar y referenciar elementos de una matriz que creo en mi archivo java principal, pero estoy teniendo problemas para encontrar la sintaxis correcta. En actionscript tienen push() y pop() para agregar y eliminar elementos en una matriz, ¿hay un equivalente en Android?equivalente a push() o pop() para matrices?
Respuesta
Uso lista de arreglo http://developer.android.com/reference/java/util/ArrayList.html
Puede usar LinkedList. Tiene métodos peek, poll y offer.
En Java una matriz tiene un tamaño fijo (después de la inicialización), lo que significa que no se puede agregar o quitar elementos de una matriz.
int[] i = new int[10];
El fragmento anterior significa que la matriz de enteros tiene una longitud de 10. No es posible añadir un undécimo número entero, sin volver a asignar la referencia a una nueva matriz, como la siguiente:
int[] i = new int[11];
En Java, el paquete java.util contiene todo tipo de estructuras de datos que pueden manejar agregar y eliminar elementos de colecciones similares a una matriz. La estructura de datos clásica Stack tiene métodos para push y pop.
Buena explicación, sin embargo, tenga en cuenta que Stack no es tan bueno de una clase, ya que hereda de Vector, y como tal está completamente sincronizado.Entonces, a menos que necesite la sincronización, ArrayList o LinkedList es probablemente una mejor opción. –
Para aquellos que no tienen tiempo para refactorizar el código para reemplazar matrices con Collection
s (por ejemplo ArrayList
), existe una alternativa. A diferencia de Collection
s, la longitud de una matriz no se puede cambiar, pero la matriz puede ser reemplazado, así:
array = push(array, item);
Los inconvenientes son que
- el conjunto matriz tiene que ser copiado cada vez que se push, y
- la matriz original
Object
no se cambia, por lo que debe actualizar la (s) variable (s) según corresponda.
Aquí es el método push
para String
:
(Se pueden crear múltiples push
métodos, uno para String
, uno para int
, etc.)
private static String[] push(String[] array, String push) {
String[] longer = new String[array.length + 1];
for (int i = 0; i < array.length; i++)
longer[i] = array[i];
longer[array.length] = push;
return longer;
}
Esta alternativa es más eficiente, más corto & más duro para leer:
private static String[] push(String[] array, String push) {
String[] longer = new String[array.length + 1];
System.arraycopy(array, 0, longer, 0, array.length);
longer[array.length] = push;
return longer;
}
Recomiendo encarecidamente el uso de este método. Para las matrices realmente simples y pequeñas no impondrá problemas, pero para una matriz mediana o pesada esto hará que el sistema itere sobre la matriz cada vez que se agrega un elemento. Si tiene una matriz de más de 100 elementos y desea agregar más 3 elementos, hará 303 operaciones. – Panthro
La bibliotecacontiene los métodos push (valores), pop(), shift() y unshift (valores).
Código ejemplo:
import com.github.underscore.$:
import java.util.*;
public class Main {
public static void main(String[] args) {
List<String> strings = Arrays.asList("one", "two", " three");
List<String> newStrings = $.push(strings, "four", "five");
// ["one", " two", "three", " four", "five"]
String newPopString = $.pop(strings).fst();
// " three"
String newShiftString = $.shift(strings).fst();
// "one"
List<String> newUnshiftStrings = $.unshift(strings, "four", "five");
// ["four", " five", "one", " two", "three"]
}
}
- 1. Equivalente para cuerdas pop
- 2. ¿Qué significa Push and Pop para Stacks?
- 3. Custom UIStoryboardSegue Push and Pop animaciones coincidentes
- 4. Equivalente a StringBuilder para matrices de bytes
- 5. ¿Cómo hacer push/pop arrays en Ember.js?
- 6. PHP matrices: Pop una matriz de matrices de un solo elemento en una matriz
- 7. NSTask o equivalente para iPhone
- 8. ¿Cuál es la función de las instrucciones push/pop usadas en los registros del ensamblaje x86?
- 9. commit-pull-merge-push o pull-merge-commit-push?
- 10. Cómo hacer push y pop en cola atómica, cómo bloquear esas operaciones?
- 11. ¿Matrices ASLOCATABLE o matrices de POINTER?
- 12. notificaciones Push para Android y iPhone
- 13. Imágenes pop como Google
- 14. explicación acerca de las instrucciones push ebp y pop ebp en el ensamblado
- 15. ¿Qué significan las declaraciones "#pragma administrado (push, off)" y "#pragma managed (pop)"?
- 16. Implementación de una cola simple usando matrices
- 17. javascript pop-up window
- 18. Registrarse para notificación push
- 19. AJAX/AJAX inverso: ¿Encuesta o Push?
- 20. Javascript "pop" de objeto
- 21. Equivalente a window.setTimeout() para C++
- 22. Equivalente a + = para el prefijo
- 23. Equivalente a open_memstream para MSVC
- 24. Equivalente a Maven para python
- 25. Equivalente a #region para C++
- 26. Equivalente a gettimeday() para Windows
- 27. Equivalente a rowMeans() para min()
- 28. equivalente pitónico de unshift o rehacer?
- 29. Taquigrafía para agregar nuevos valores a un hash de matrices
- 30. seleccionar sólo subdocumentos o matrices
¿Qué tipo de matriz tiene? ¿Puedes mostrarnos algún código? – EboMike
int [] intArray = new int {2, 3, 5, 8, 13}; ¿cómo haré referencia intArray [3], o todos los elementos uno a la vez? – clayton33