utilizan tipos resueltos que principales las example ejercicios describa conclusion collection colecciones clases java collections

tipos - ejercicios resueltos de colecciones en java



Java-¿Cómo convertir la colección de tipos en ArrayList? (5)

Como otras personas han mencionado, ArrayList tiene un constructor que toma una colección de elementos y los agrega a todos. Aquí está la documentación:

http://java.sun.com/javase/6/docs/api/java/util/ArrayList.html#ArrayList%28java.util.Collection%29

Así que tienes que hacer:

ArrayList<MyNode> myNodeList = new ArrayList<MyNode>(this.getVertices());

Sin embargo, en otro comentario dijiste que te estaba dando un error de compilación. Parece que tu clase MyGraph es una clase genérica . Y así, getVertices () en realidad devuelve el tipo V, no el tipo myNode.

Creo que tu código debería verse así:

public V getNode(int nodeId){ ArrayList<V> myNodeList = new ArrayList<V>(this.getVertices()); return myNodeList(nodeId); }

Pero, dicho eso, es una forma muy ineficiente de extraer un nodo. Lo que podría querer hacer es almacenar los nodos en un árbol binario, luego, cuando obtiene una solicitud para el enésimo nodo, realiza una búsqueda binaria.

public class MyGraph<V,E> extends SparseMultigraph<V,E>{ private ArrayList<MyNode> myNodeList; public MyNode getNode(int nodeId){ myNodeList = new ArrayList<MyNode>(); myNodeList = (ArrayList<MyNode>)this.getVertices(); int i;

Los siguientes son los mensajes de error:

Excepción en el hilo "main" java.lang.ClassCastException: java.util.Collections $ UnmodifiableCollection no se puede convertir a java.util.ArrayList ...

¿Alguien puede ayudar?


El siguiente código fallará:

List<String> will_fail = (List<String>)Collections.unmodifiableCollection(new ArrayList<String>());

Esto en cambio funcionará:

List<String> will_work = new ArrayList<String>(Collections.unmodifiableCollection(new ArrayList<String>()));


Prueba este codigo

Convertir ArrayList a la colección

ArrayList<User> usersArrayList = new ArrayList<User>(); Collection<User> userCollection = new HashSet<User>(usersArrayList);

Convertir Colección a ArrayList

Collection<User> userCollection = new HashSet<User>(usersArrayList); List<User> userList = new ArrayList<User>(userCollection );


Se necesita más información para una respuesta definitiva, pero este código

myNodeList = (ArrayList<MyNode>)this.getVertices();

solo funcionará si this.getVertices() devuelve un (subtipo de) List<MyNode> . Si es una colección diferente (como su Excepción parece indicar), desea utilizar

new ArrayList<MyNode>(this.getVertices())

Esto funcionará siempre que getVertices devuelva un tipo de Colección.


public <E> List<E> collectionToList(Collection<E> collection) { List<E> list; if (collection instanceof List) { list = (List<E>) collection; } else { list = new ArrayList<E>(collection); } return list; }

Utilice el método anterior para convertir la colección a la lista