8
votes

Convertir ArrayList à Java.Util.List

J'ai du mal à m'envelopper la tête autour d'un concept. J'essaie de convertir un arraylist à une liste (code> (ou Liste ), mais je continue à courir dans une distribution exception. Oui, j'ai vu le code pour convertir une matrice de chaîne en liste, mais je ressens un scénario différent. Mon code pertinent est ici, veuillez noter que les déclarations sont parce que j'utilise GWT et que je dois donc déclarer certaines choses comme statiques et finales ... xxx

essaie de créer un cellule de cellule qui veut une liste comme entrée. Je reçois une arrayliste de commandes à partir d'une requête de DB, puis itérale pour retirer les numéros de commande que j'ai ensuite mis dans une arrayliste, que je souhaite ensuite convertir en liste à utiliser dans la cellule de cellule. Quelqu'un peut-il expliquer pourquoi je ne peux pas faire cela et quelle est la méthode appropriée?


3 commentaires

Je ne vois pas où vous essayez de taper quelque chose. ArrayList est un enfant de la liste , ce qui signifie qu'un arraylist est toujours une liste , et toutes les méthodes que vous voudrez peut-être utiliser à partir de la classe ArrayList (comme Taille () , get () , indexof () < / code>, etc.) sont tous disponibles dans la liste aussi! C'est la beauté de l'héritage :) Pouvez-vous nous donner une trace de pile afin que nous puissions voir votre problème exact??


Valeurs ne semble pas être initialisée nulle part, vous obtiendrez un nullpointexception avant autre chose.


Cet échantillon de code semble comme s'il manque des choses.


4 Réponses :


5
votes

Un arraylist est déjà une liste , car arraylist implémente la liste interface . Aucun casting n'est nécessaire.


0 commentaires

1
votes

java.util.list est une interface et la liste déjà implémentée, vous n'avez rien à lancer


0 commentaires

18
votes

Je ne comprends pas le problème que vous avez depuis une liste implémente une liste avec la liste étant une interface.

Vous pouvez Changez cette ligne xxx

à: xxx


5 commentaires

Mon problème était dans ma tête, je pensais que je devais avoir à convery dans une liste, je n'ai pas réalisé que l'arraylist était une liste de types, je pensais que c'était sa propre chose. J'ai changé cette ligne, et maintenant ça marche. Merci.


Recommandation personnelle, essayez d'utiliser l'interface lors de la déclaration d'une variable afin que vous puissiez modifier la mise en œuvre par la suite. Imaginez par exemple la commutation de ArrayList à un LinkedList , vous n'auriez pas besoin de changer quoi que ce soit si vos méthodes s'attendent à une liste .


@ALEX - Ce n'est pas un bon conseil pour un projet qui utilise GWT, en particulier pour GWT-RPC. De Guide de développeur de Google : " pour faire le Le meilleur usage du polymorphisme, cependant, vous devez toujours essayer d'être aussi spécifique que votre conception permet de définir des interfaces de service. Spécificité accrue permet au compilateur de faire un meilleur travail d'élimination du code inutile lorsqu'il optimise votre demande de réduction de la taille. "


Je pense que, en général, il s'agit d'un Bon conseil . Merci même pour votre lien, je ne le savais certainement pas!


Je ne comprends pas non plus le problème, mais Eclipse a des problèmes avec quelque chose comme Liste > autre () {Liste > résultat = NULL; Résultat de retour;} i Déteste Système de type Java pour ce genre de choses ...



0
votes

un ArrayList code> est une liste code>, donc je ne suis pas sûr de ce qui pourrait se passer. Cependant, j'ai une suspicion. Regardez les importations en haut du fichier. Peut-être avez-vous la ligne au sommet du fichier: xxx pré>

J'ai dit à mon IDE d'utiliser java.awt.list code> comme une suggestion pour la liste code>. Cependant, vous écrivez encore trop de code. Considérez les FOOCH CODE> DE JAVA: P>

@Override
public void onSuccess(ArrayList<Order> result) {
    List<String> orderNumbers = new ArrayList<String>();               
    for (Order order: result) {
        orderNumbers.add(Integer.toString(order.getOrderNumber()));                 
    }
    values.addAll(orderNumbers);
    cellList.setRowData(values);
}


1 commentaires

Merci pour les suggestions, j'ai nettoyé mon code. Une fois que j'ai compris que cette arraylist était une liste elle-même.