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"
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);
List<String> list=new ArrayList<String>();
list.add("sravan");
list.add("vasu");
list.add("raki");
String names[]=list.toArray(new String[list.size()])
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.
String[] values = new String[arrayList.size()];
for (int i = 0; i < arrayList.size(); i++) {
values[i] = arrayList.get(i).type;
}
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+" ");
}
}
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.
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());
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];
}
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]);
}
}
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.