java - objetos - Convierta una matriz en una ArrayList
metodos arraylist java (5)
Si puedes, usa guayaba
Vale la pena señalar la forma de Guava, que simplifica enormemente estas travesuras:
Uso
Para una lista inmutable
Use la clase copyOf()
y copyOf()
métodos de fábrica of()
y copyOf()
(los elementos no pueden ser nulos) :
List<String> il = ImmutableList.of("string", "elements"); // from varargs
List<String> il = ImmutableList.copyOf(aStringArray); // from array
Para una lista mutable
Use la clase Lists
y sus newArrayList()
métodos de fábrica newArrayList()
:
List<String> l1 = Lists.newArrayList(anotherListOrCollection); // from collection
List<String> l2 = Lists.newArrayList(aStringArray); // from array
List<String> l3 = Lists.newArrayList("or", "string", elements"); // from varargs
Tenga en cuenta también los métodos similares para otras estructuras de datos en otras clases, por ejemplo en Sets
.
¿Por qué guayaba?
La principal atracción podría ser reducir el desorden debido a los genéricos para la seguridad del tipo, ya que el uso de los métodos de la fábrica de guayaba permite que los tipos se infieran la mayor parte del tiempo. Sin embargo, este argumento contiene menos agua desde que Java 7 llegó con el nuevo operador de diamantes.
Pero no es la única razón (y Java 7 aún no está en todas partes): la sintaxis abreviada también es muy útil, y los iniciadores de métodos, como se ve arriba, permiten escribir un código más expresivo. Lo haces en una llamada de guayaba lo que lleva 2 con las colecciones de Java actuales.
Si no puedes ...
Para una lista inmutable
Use los métodos de fábrica Arrays.asList()
y Collections.unmodifiableList()
JDK:
List<String> l1 = Arrays.asList(anArrayOfElements);
List<String> l2 = Arrays.asList("element1", "element2");
Tenga en cuenta que:
- El tipo devuelto para
asList()
diceArrayList
, pero no esjava.util.ArrayList
. Es un tipo interno, que imitaArrayList
pero en realidad hace referencia directamente a la matriz anterior y prohíbe algunas modificaciones. -
unmodifiableList()
bloquea adicionalmente los cambios en la vista devuelta de la lista original.
Vea el próximo paso si necesita una lista mutable.
Para una lista mutable
Lo mismo que arriba, pero envuelto con un java.util.ArrayList
real:
List<String> l1 = new ArrayList<String>(Arrays.asList(array)); // Java 1.5 to 1.6
List<String> l1b = new ArrayList<>(Arrays.asList(array)); // Java 1.7+
List<String> l2 = new ArrayList<String>(Arrays.asList("a", "b")); // Java 1.5 to 1.6
List<String> l2b = new ArrayList<>(Arrays.asList("a", "b")); // Java 1.7+
Con fines educativos: The Good ol ''Manual Way
// for Java 1.5+
static <T> List<T> arrayToList(final T[] array) {
final List<T> l = new ArrayList<T>(array.length);
for (final T s : array) {
l.add(s);
}
return (l);
}
// for Java < 1.5 (no generics, no compile-time type-safety, boo!)
static List arrayToList(final Object[] array) {
final List l = new ArrayList(array.length);
for (int i = 0; i < array.length; i++) {
l.add(array[i]);
}
return (l);
}
Esta pregunta ya tiene una respuesta aquí:
- Crear ArrayList desde la matriz 32 respuestas
Tengo muchos problemas para convertir una matriz en una ArrayList
en Java. Esta es mi matriz en este momento:
Card[] hand = new Card[2];
"mano" contiene una variedad de "Tarjetas". ¿Cómo se vería esto como una ArrayList
?
Como ArrayList
esa línea sería
import java.util.ArrayList;
...
ArrayList<Card> hand = new ArrayList<Card>();
Para usar ArrayList
tienes que hacer
hand.get(i); //gets the element at position i
hand.add(obj); //adds the obj to the end of the list
hand.remove(i); //removes the element at position i
hand.add(i, obj); //adds the obj at the specified index
hand.set(i, obj); //overwrites the object at i with the new obj
Lea también este http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html
Esto te dará una lista.
List<Card> cardsList = Arrays.asList(hand);
Si quieres una lista de arrays, puedes hacer
ArrayList<Card> cardsList = new ArrayList<Card>(Arrays.asList(hand));
declarar la lista (e inicializarla con una lista de matrices vacía)
List<Card> cardList = new ArrayList<Card>();
agregando un elemento:
Card card;
cardList.add(card);
iterando sobre los elementos:
for(Card card : cardList){
System.out.println(card);
}
List<Card> list = new ArrayList<Card>(Arrays.asList(hand));