在 java 中将 ArrayList 转换为 Array

我有一个数组列表,其值包括“ abcd # xyz”和“ mnop # qrs”。我想把它转换成一个 Array,然后用 # 作为分隔符将它分割开来 abd,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”

254374 次浏览

你不需要重新发明轮子,给你toArray()的方法:

String []dsf = new String[al.size()];
al.toArray(dsf);

根据我对这个问题的理解,你对迭代所做的并没有错。它为您提供一个有效的 String 对象数组。然而,就像在另一个答案中提到的那样,对 ArrayList 对象 = > http://docs.oracle.com/javase/1.5.0/docs/api/java/util/ArrayList.html#toArray%28%29使用 toArray ()方法更容易

只是附加说明。如果正确迭代 dsf 数组并单独打印每个元素,就会得到有效的输出。像这样:

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

您可能尝试一次打印完整的 Array 对象,因为这样会给出一个对象内存地址,就像您在问题中得到的那样。如果看到这种输出,则需要为要打印的对象提供 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]);
}
}

下面是给定场景的解决方案-

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];
}
List<String> list=new ArrayList<String>();
list.add("sravan");
list.add("vasu");
list.add("raki");
String names[]=list.toArray(new String[list.size()])
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+" ");
}


}
String[] values = new String[arrayList.size()];
for (int i = 0; i < arrayList.size(); i++) {
values[i] = arrayList.get(i).type;
}
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开始,构造的数组会调整大小。

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

这可以通过使用 stream 来完成:

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

返回值将是拆分字符串的数组。 这样可以避免将数组列表转换为数组并执行操作。

NameOfArray.toArray(new String[0])

这将在 java 中将 ArrayList 转换为 Array

// A Java program to convert an ArrayList to arr[]
import java.io.*;
import java.util.List;
import java.util.ArrayList;


class Main {
public static void main(String[] args)
{
List<Integer> al = new ArrayList<Integer>();
al.add(10);
al.add(20);
al.add(30);
al.add(40);


Integer[] arr = new Integer[al.size()];
arr = al.toArray(arr);


for (Integer x : arr)
System.out.print(x + " ");
}
}