web-dev-qa-db-fra.com

ArrayList des tableaux de chaînes

J'aimerais faire quelque chose comme ça:

private ArrayList<String[]> addresses = new ArrayList<String[3]>();

Ça n'a pas l'air de fonctionner. Quel est le moyen le plus simple de stocker plusieurs adresses avec 3 champs par adresse dans un tableau sans créer de classe distincte?

26
Johan

Utilisez une seconde ArrayList pour les 3 chaînes, pas un tableau primitif. C'est à dire.
private List<List<String>> addresses = new ArrayList<List<String>>();

Ensuite, vous pouvez avoir:

ArrayList<String> singleAddress = new ArrayList<String>();
singleAddress.add("17 Fake Street");
singleAddress.add("Phoney town");
singleAddress.add("Makebelieveland");

addresses.add(singleAddress);

(Je pense que des choses étranges peuvent se produire avec l'effacement du texte ici, mais je ne pense pas que cela devrait compter ici)

Si vous êtes prêt à utiliser un tableau primitif, seul un changement mineur est requis pour que votre exemple fonctionne. Comme expliqué dans d'autres réponses, la taille du tableau ne peut pas être incluse dans la déclaration. Donc changeant:

private ArrayList<String[]> addresses = new ArrayList<String[3]>();

à

private ArrayList<String[]> addresses = new ArrayList<String[]>();

marchera.

45
Grundlefleck
List<String[]> addresses = new ArrayList<String[]>();
String[] addressesArr  = new String[3];

addressesArr[0] = "zero";
addressesArr[1] = "one";
addressesArr[2] = "two";

addresses.add(addressesArr);
22
Upul Bandara

Je n'utiliserais pas de tableaux. Ils sont problématiques pour plusieurs raisons et vous ne pouvez pas le déclarer en termes de taille de tableau spécifique. Essayer:

List<List<String>> addresses = new ArrayList<List<String>>();

Mais honnêtement pour les adresses, je créerais une classe pour les modéliser.

Si vous utilisiez des tableaux, ce serait:

List<String[]> addresses = new ArrayList<String[]>();

c'est-à-dire que vous ne pouvez pas déclarer la taille du tableau.

Enfin, ne déclarez pas vos types en tant que types concrets dans des cas comme celui-ci (c'est-à-dire pour addresses). Utilisez l'interface comme je l'ai fait ci-dessus. Cela s'applique aux variables membres, aux types de retour et aux types de paramètres.

10
cletus

Méthode simple et directe pour créer ArrayList of String

    List<String> category = Arrays.asList("everton", "liverpool", "swansea", "chelsea");

À votre santé

6

Vous ne pouvez pas forcer les tableaux String à avoir une taille spécifique. Tu peux le faire:

private List<String[]> addresses = new ArrayList<String[]>();

mais un tableau de toute taille peut être ajouté à cette liste.

Cependant, comme d'autres l'ont mentionné, la bonne chose à faire ici est de créer une classe distincte représentant les adresses. Ensuite, vous auriez quelque chose comme:

private List<Address> addresses = new ArrayList<Address>();
5
bruno conde
private List<String[]> addresses = new ArrayList<String[]>();

cela fonctionnera définitivement ...

1
shaFayi

essaye ça

ArrayList<ArrayList<String>> PriceModelList = new ArrayList<>();
    ArrayList<ArrayList<String>> PriceQtyList = new ArrayList<>();
    ArrayList<ArrayList<String>> PriceTotalList = new ArrayList<>();

    for (int i = 0; i < CustomerNames.length; i++) {
        PriceModelList.add(new ArrayList<String>());
        String[] PriceModel = {"s6", "s7", "note4", "note5", "j5", "j6"};
        for (int j = 0; j < PriceModel.length; j++) {
            PriceModelList.get(i).add(PriceModel[j]);
        }

        PriceQtyList.add(new ArrayList<String>());
        String[] PriceQut = {"12", "13", "21", "15", "43", "21"};
        for (int k = 0; k < PriceQut.length; k++) {
            PriceQtyList.get(i).add(PriceQut[k]);
        }

        PriceTotalList.add(new ArrayList<String>());
        String[] PriceTotal = {"1323", "1312321", "43123212", "43434", "12312", "43322"};
        for (int m = 0; m < PriceTotal.length; m++) {
            PriceTotalList.get(i).add(PriceTotal[m]);
        }
    }

    ArrayList<ArrayList<ArrayList<String>>> CustomersShoppingLists = new ArrayList<>();
    CustomersShoppingLists.add(PriceModelList);
    CustomersShoppingLists.add(PriceQtyList);
    CustomersShoppingLists.add(PriceTotalList);
1
A.G.THAMAYS

Les travaux suivants dans Java 8 ..

List<String[]> addresses = new ArrayList<>();