Equivalente a push () o pop () para arrays?
Estoy tratando de agregar, eliminar y hacer referencia a elementos de una matriz que crear en mi archivo principal de java, pero estoy teniendo problemas para averiguar la sintaxis correcta. En actionscript tienen push () y pop () para agregar y quitar elementos en una matriz, ¿hay un equivalente en android?
- Cómo dibujar una ruta entre dos geopuntos en el Android
- ¿Puedo usar jmonkeyengine en android?
- Pasando la clase anidada <MyInterface <T> como parámetro en Android
- Android Studio - Illegal character 8204 error
- Org.apache.http.client.ClientProtocolException
- Crear una anotación Java con comportamiento contextual IDE
- HttpURLConnection en android no envía el encabezado User-Agent correcto
- Android: convierte textView en una salida de registro
- No se puede conectar a los puntos finales gae locales del emulador de Genymotion
- ¿Cómo configuro un borde alrededor de una imagen en Android?
- NullPointerException en la animación de dissapearence de RecyclerView desde soporte v.23.2.0
- Anotación Java ejecuta un método dentro de la declaración de anotación (uso para android)
- Cómo comprobar el espacio disponible en el dispositivo Android? En la tarjeta SD?
Utilice la lista Array http://developer.android.com/reference/java/util/ArrayList.html
En Java, una matriz tiene un tamaño fijo (después de la inicialización), lo que significa que no puede agregar o eliminar 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 agregar un entero undécimo, sin volver a asignar la referencia a una nueva matriz, como el siguiente:
int[] i = new int[11];
En Java, el paquete java.util contiene todo tipo de estructuras de datos que pueden manejar la adición y eliminación de elementos de colecciones de tipo array. La estructura de datos clásica Stack tiene métodos para push y pop.
Para aquellos que no tienen tiempo para refactorizar el código para reemplazar arrays con Collection
s (por ejemplo ArrayList
), hay una alternativa. A diferencia de Collection
s, la longitud de una matriz no se puede cambiar, pero la matriz se puede reemplazar, como esto:
array = push(array, item);
Los inconvenientes son que
- Toda la matriz tiene que ser copiada cada vez que se pulsa, y
- El
Object
matriz original no se cambia, por lo que tiene que actualizar la variable (s) según corresponda.
Aquí está el método push
para String
:
(Puede crear varios métodos de push
, 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 corta y más difícil de 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; }
Puede utilizar LinkedList. Tiene métodos peek, poll y oferta.
La biblioteca Underscore-java contiene métodos push (valores), pop (), shift () y unshift (valores).
Ejemplo de código:
import com.github.underscore.lodash.$: 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"]
- Cómo reducir un tamaño de archivo de imagen antes de subir a un servidor
- Actividad de Android como diálogo, pero sin una barra de título