0
votes

Comment puis-je définir ma classe Enum retour dans une arrayliste Java

Donc, j'ai une arrayliste qui contient des valeurs de chaîne dans ma méthode principale.

et je veux aller chercher dans la classe Enum la référence de chaque élément de mon arraylist et définissez-la dans le même index. P >

permet de dire que mon arraylist est ["gua", "août", "cua"] code> je veux avoir dans mon sortie [val, rencontré, leu] code >. p>

J'essaie donc de réparer ma méthode de recherche () afin qu'elle renvoie une arracheListe non seulement une chaîne et sans utiliser de boucle 'pour' dans Main (). Mais ça me donnera toujours Une erreur lorsque j'essaie de changer mon type de retour. p>

Des idées? P>

public enum Abreviation {
    Ala("GCU", "GCC", "GCA", "GCG"),
    Arg("CGU", "CGC", "CGA", "CGG", "AGA", "AGG"),
    Asn("AAU", "AAC"),
    Asp("GAU", "GAC"),
    Cys("UGU", "UGC"),
    Glu("GAG", "GAA"),
    Gln("CAG", "CAA"),
    Gly("GGU", "GGC", "GGA", "GGG"),
    His("CAC", "CAU"),
    Ile("AUU", "AUC", "AUA"),
    Leu("UUA", "UUG", "CUU", "CUC", "CUA", "CUG"),
    Lys("AAA", "AAG"),
    Met("AUG"),
    Phe("UUU", "UUC"),
    Pro("CCU", "CCC", "CCA", "CCG"),
    Pyl("UAG"),
    Sec("UGA"),
    Ser("UCU", "UCC", "UCA", "UCG", "AGU", "AGC"),
    Thr("ACU", "ACG", "ACA", "ACC"),
    Trp("UGG"),
    Tyr("UAU", "UAC"),
    Val("GUU", "GUC", "GUA", "GUG"),
    Fin("UAA")
    ;

    private final List<String> arn;

    private Abreviation(final String... arn) {
        this.arn = Arrays.asList(arn);
    }


    public boolean contains(final String codon) {
        return this.arn.contains(codon);
    }

}





public class MainMain {

    public static void main(String[] args) {

        ArrayList <String> strings = new ArrayList<String>();

        strings.add("GUA");
        strings.add("AUG");
        strings.add("CUA");

        for (int i = 0; i < strings.size(); i++) {          
            System.out.println(find(strings.get(i), strings));          

        }


    }


    public static List<String> find(final String codon, List<String> strings) {             

        for (final Abreviation abb : Abreviation.values()){

            if (abb.contains(codon)) {
                int arn = strings.indexOf(codon);
                strings.set(arn, abb.name());

                return  strings;
            }
        }
        throw new IllegalArgumentException("Erreur");
    }


}


0 commentaires

3 Réponses :


1
votes

C'est parce que vous imprimez la liste des chaînes chaque fois que vous appelez la fonction de recherche.Sait qu'il existe trois éléments de la liste des chaînes, la liste des chaînes est imprimée trois fois.

public static void main(String[] args) {

    ArrayList <String> strings = new ArrayList<String>();

    strings.add("GUA");
    strings.add("AUG");
    strings.add("CUA");
    System.out.println(find(strings));

}


public static List<String> find(List<String> strings) {             
    boolean flag = false;
    for( int i=0 ; i<strings.size() ; ++i ) {
        String codon = strings.get(i);
        for (final Abreviation abb : Abreviation.values()){
            if (abb.contains(codon)) {
                flag = true;
                int arn = strings.indexOf(codon);
                strings.set(arn, abb.name());
            }
        }
        if( !flag ) {
            throw new IllegalArgumentException("Erreur");
        }
    }
    return strings;
}


2 commentaires

En fait, je voulais réparer la méthode de recherche () afin qu'il puisse retourner [val, rencontré, leu]


Ensuite, vous pouvez itérer des éléments de la liste des chaînes dans la fonction de recherche comme ci-dessus au lieu de itération dans la fonction principale.



0
votes

Pourquoi ne retournez-vous pas une liste de abréviation s?

Comme ceci: xxx


0 commentaires

0
votes

Il serait préférable de créer une nouvelle liste avec chaîne ou d'abréviation , mais si vous souhaitez effectuer le remplacement, vous pouvez utiliser remplaillel . xxx

ou sans flux : xxx


1 commentaires

C'est ce que je cherchais. Merci :)