web-dev-qa-db-fra.com

Conversion de tableau en tableau dans java

J'ai un ArrayList avec des valeurs comme "abcd # xyz" et "mnop # qrs". Je veux le convertir en tableau puis le scinder avec # comme délimiteur et avoir abcd, mnop dans un tableau et xyz, qrs dans un autre tableau. J'ai essayé le code suivant:

String dsf[] = new String[al.size()];              
for(int i =0;i<al.size();i++){
  dsf[i] = al.get(i);
}

Mais il a échoué en disant "Ljava.lang.String; @ 57ba57ba"

63
Shruthi

Vous n'avez pas besoin de réinventer la roue, ici c'est la méthode toArray():

String []dsf = new String[al.size()];
al.toArray(dsf);
116
talnicolas
List<String> list=new ArrayList<String>();
list.add("sravan");
list.add("vasu");
list.add("raki");
String names[]=list.toArray(new String[list.size()])
55
List<String> list=new ArrayList<String>();
list.add("sravan");
list.add("vasu");
list.add("raki"); 
String names[]=list.toArray(new String[0]);

si vous voyez la dernière ligne (nouvelle chaîne [0]), vous n'avez pas à donner la taille, il y a des moments où nous ne connaissons pas la longueur de la liste, donc pour commencer en lui donnant 0, le construit tableau va redimensionner.

6
nandy
String[] values = new String[arrayList.size()];
        for (int i = 0; i < arrayList.size(); i++) {
            values[i] = arrayList.get(i).type;
        }
2
Anand
import Java.util.*;
public class arrayList {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        ArrayList<String > x=new ArrayList<>();
        //inserting element
        x.add(sc.next());
        x.add(sc.next());
        x.add(sc.next());
        x.add(sc.next());
        x.add(sc.next());
         //to show element
         System.out.println(x);
        //converting arraylist to stringarray
         String[]a=x.toArray(new String[x.size()]);
          for(String s:a)
           System.out.print(s+" ");
  }

}
1
Satyendra Jaiswal

Ce que vous avez fait avec l’itération n’est pas faux de ce que je peux en dire à partir de la question. Il vous donne un tableau valide d'objets String. Comme mentionné dans une autre réponse, il est cependant plus facile d'utiliser la méthode toArray () disponible pour l'objet ArrayList => http://docs.Oracle.com/javase/1.5.0/docs/api/Java/util /ArrayList.html#toArray%28%29

Juste une note de côté. Si vous parcouriez correctement votre tableau dsf et imprimiez chaque élément séparément, vous obtiendrez une sortie valide. Comme ça:

for(String str : dsf){
   System.out.println(str);
}

Ce que vous avez probablement essayé de faire, c’est d’imprimer l’objet Array complet en même temps, car cela donnerait une adresse mémoire à l’objet comme dans votre question. Si vous voyez ce type de sortie, vous devez fournir une méthode toString () pour l'objet que vous imprimez.

1
hcpl

C'est la bonne réponse que vous voulez et cette solution, je me suis lancé sur netbeans

ArrayList a=new ArrayList();
a.add(1);
a.add(3);
a.add(4);
a.add(5);
a.add(8);
a.add(12);

int b[]= new int [6];
        Integer m[] = new Integer[a.size()];//***Very important conversion to array*****
        m=(Integer[]) a.toArray(m);
for(int i=0;i<a.size();i++)
{
    b[i]=m[i]; 
    System.out.println(b[i]);
}   
    System.out.println(a.size());
1
Abhinav khosla

Voici la solution pour vous scénario donné -

List<String>ls = new ArrayList<String>();
    ls.add("dfsa#FSDfsd");
    ls.add("dfsdaor#ooiui");
    String[] firstArray = new String[ls.size()];    
 firstArray =ls.toArray(firstArray);
String[] secondArray = new String[ls.size()];
for(int i=0;i<ls.size();i++){
secondArray[i]=firstArray[i].split("#")[0];
firstArray[i]=firstArray[i].split("#")[1];
} 
1
kundan bora
package com.v4common.shared.beans.audittrail;

import Java.util.ArrayList;
import Java.util.List;

public class test1 {
    public static void main(String arg[]){
        List<String> list = new ArrayList<String>();
        list.add("abcd#xyz");
        list.add("mnop#qrs");

        Object[] s = list.toArray();
        String[] s1= new String[list.size()];
        String[] s2= new String[list.size()];

        for(int i=0;i<s.length;i++){
            if(s[i] instanceof String){
                String temp = (String)s[i];
                if(temp.contains("#")){
                    String[] tempString = temp.split("#");
                    for(int j=0;j<tempString.length;j++) {
                        s1[i] = tempString[0];
                        s2[i] = tempString[1];
                    }

                }
            }   
        }
        System.out.println(s1.length);
        System.out.println(s2.length);
        System.out.println(s1[0]);
        System.out.println(s1[1]);
    }
}
1
kandarp

Cela peut être fait en utilisant stream:

List<String> stringList = Arrays.asList("abc#bcd", "mno#pqr");
    List<String[]> objects = stringList.stream()
                                       .map(s -> s.split("#"))
                                       .collect(Collectors.toList());

La valeur de retour serait des tableaux de chaîne scindée. Cela évite de convertir l'arraylist en tableau et d'effectuer l'opération.

0
Shreyas