在Java中将ArrayList转换为数组

我有一个像“abcd#xyz”和“mnop#qrs”值的ArrayList。 我想将它转换成一个数组,然后用#作为分隔符分割,并在数组中有abcd,mnop,在另一个数组中有xyz,qrs。 我试了下面的代码:

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

但它没有说“Ljava.lang.String; @ 57ba57ba”

你能帮我吗。

你不需要重新发明轮子,下面是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]); 

如果你看到最后一行(new String [0]),你不必提供大小,有时候我们不知道列表的长度,所以开始给它为0,构造数组将resize。

 String[] values = new String[arrayList.size()]; for (int i = 0; i < arrayList.size(); i++) { values[i] = arrayList.get(i).type; } 

你对迭代的处理并不是错误的,基于这个问题我可以做什么。 它给你一个有效的String对象数组。 就像在另一个答案中提到的那样,使用ArrayList对象可用的toArray()方法更容易=> http://docs.oracle.com/javase/1.5.0/docs/api/java/util/ArrayList.html #指定者%28%29

只是一个侧面说明。 如果你要正确地迭代你的dsf数组并且单独打印每个元素,你将得到有效的输出。 喜欢这个:

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

你可能试图做的是一次打印整个数组对象,因为这会给你一个对象的内存地址像你在你的问题。 如果您看到这种输出,则需要为要打印的对象提供toString()方法。

 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]); } } 

这里是给你的解决scheme –

 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]; } 
 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+" "); } } 

这是你想要的正确答案,这个解决scheme我已经在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());