在java中将ArrayList转换为Array

时间:2012-03-29 16:16:58

标签: java arrays arraylist

我有一个ArrayList,其值为“abcd#xyz”和“mnop#qrs”。我想将它转换为数组,然后用#作为分隔符拆分它,并在数组中使用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”

你能帮帮我吗?

12 个答案:

答案 0 :(得分:116)

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

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

答案 1 :(得分:55)

List<String> list=new ArrayList<String>();
list.add("sravan");
list.add("vasu");
list.add("raki");
String names[]=list.toArray(new String[list.size()])

答案 2 :(得分:6)

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 ,构造的数组将调整大小。

答案 3 :(得分:2)

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

答案 4 :(得分:1)

基于这个问题,你对迭代做了什么并没有错。它为您提供了一个有效的String对象数组。就像在另一个答案中提到的那样,使用可用于ArrayList对象的toArray()方法更容易=&gt; http://docs.oracle.com/javase/1.5.0/docs/api/java/util/ArrayList.html#toArray%28%29

只是旁注。如果你要正确迭代你的dsf数组并自己打印每个元素,你将得到有效的输出。像这样:

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

您可能尝试做的是立即打印完整的Array对象,因为这会提供您在问题中得到的对象内存地址。如果您看到这种输出,则需要为要打印的对象提供toString()方法。

答案 5 :(得分: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]);
    }
}

答案 6 :(得分: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];
} 

答案 7 :(得分: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+" ");
  }

}

答案 8 :(得分:1)

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

答案 9 :(得分:0)

这可以使用stream:

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

返回值是split string的数组。 这样可以避免将arraylist转换为数组并执行操作。

答案 10 :(得分:0)

我们可以使用 3 mrthod 将 ararylist 转换为数组

  1. public Object[] toArray() - 它将返回对象数组

    Object[] array = list.toArray();

  2. public T[] toArray(T[] a) - 这样我们就创建了array 和 toArray 就可以了 作为参数然后返回它

       String[] arr = new String[list.size()]; 
        arr = list.toArray(arr);
    
  3. 公共get()方法;

    迭代 ararylist 并在数组中一一添加元素。

有关这些方法的更多详细信息,请访问 Java Vogue

答案 11 :(得分:0)

public T[] toArray(T[] a) - 在这个方法中,我们创建一个大小为 arraylist 的数组并将其作为参数传递,它将返回 arraylist 元素的数组

    String[] arr = new String[list.size()]; 

    arr = list.toArray(arr);