java中ArrayList到Array的转换

java中ArrayList到Array的转换,java,arrays,arraylist,Java,Arrays,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); } String dsf[]=新字符串[al.size()]; 对于(i

我有一个数组列表,其值为“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);
}
String dsf[]=新字符串[al.size()];

对于(int i=0;i您不需要重新发明轮子,
toArray()
方法:

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

根据这个问题,从我的理解来看,您在迭代中所做的并没有错。它为您提供了一个有效的字符串对象数组。正如在另一个答案中提到的那样,使用ArrayList对象可用的toArray()方法=>

只是一个旁注。如果您正确地迭代dsf数组并单独打印每个元素,您将获得有效的输出。如下所示:

for(String str : dsf){
   System.out.println(str);
}
您可能试图立即打印完整的数组对象,因为这将提供一个与您的问题相同的对象内存地址。如果您看到这种输出,则需要为正在打印的对象提供一个toString()方法。

package com.v4common.shared.beans.audittrail;
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]);
    }
}
导入java.util.ArrayList; 导入java.util.List; 公共类test1{ 公共静态void main(字符串arg[]){ 列表=新的ArrayList(); 列表。添加(“xyz”); 列表。添加(“mnop#qrs”); 对象[]s=list.toArray(); String[]s1=新字符串[list.size()]; String[]s2=新字符串[list.size()];
对于(int i=0;i,这里是给定场景的解决方案-

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];
} 
Listls=newarraylist();
ls.添加(“dfsa#FSDfsd”);
ls.添加(“dfsdaor#ooiui”);
String[]firstArray=新字符串[ls.size()];
firstArray=ls.toArray(firstArray);
String[]secondArray=新字符串[ls.size()];
对于(int i=0;i
List=new ArrayList();
列表。添加(“sravan”);
列表。添加(“vasu”);
列表。添加(“raki”);
字符串名称[]=list.toArray(新字符串[list.size()])
导入java.util.*;
公共类数组列表{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
ArrayList x=新的ArrayList();
//插入元素
x、 添加(sc.next());
x、 添加(sc.next());
x、 添加(sc.next());
x、 添加(sc.next());
x、 添加(sc.next());
//显示元素
系统输出println(x);
//将arraylist转换为stringarray
字符串[]a=x.toArray(新字符串[x.size()]);
for(字符串s:a)
系统输出打印(s+“”);
}
}
String[]value=新字符串[arrayList.size()];
对于(int i=0;i
List List=new ArrayList();
列表。添加(“sravan”);
列表。添加(“vasu”);
列表。添加(“raki”);
字符串名称[]=list.toArray(新字符串[0]);

如果您看到最后一行(新字符串[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());
ArrayList a=新的ArrayList();
a、 增加(1);
a、 增加(3);
a、 增加(4);
a、 增加(5);
a、 增加(8);
a、 增加(12);
int b[]=新int[6];
整数m[]=新整数[a.size()];//***非常重要的数组转换*****
m=(整数[])a.toArray(m);

对于(int i=0;i这可以使用流:

List<String> stringList = Arrays.asList("abc#bcd", "mno#pqr");
    List<String[]> objects = stringList.stream()
                                       .map(s -> s.split("#"))
                                       .collect(Collectors.toList());
List-stringList=Arrays.asList(“abc#bcd”、“mno#pqr”);
List objects=stringList.stream()
.map(s->s.split(“#”)
.collect(Collectors.toList());
返回值将是拆分字符串的数组。
这样可以避免将arraylist转换为数组并执行该操作。

我们可以使用3 mr方法将arraylist转换为数组

  • 公共对象[]toArray()-它将返回对象的数组

    Object[]数组=list.toArray()

  • 公共T[]toArray(T[]a)-通过这种方式,我们将创建数组,然后toArray接受它 作为参数,然后返回它

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

    迭代ararylist并在数组中逐个添加元素

  • 有关这些方法的更多详细信息,请访问public T[]toArray(T[]a)-在该方法中,我们创建一个大小为arraylist的数组,并将其作为参数传递,它将返回arraylist元素的数组

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

    张贴ArrayList的定义和完整的错误消息“it failed saying…”是什么意思?这看起来像是打印
    dsf.toString()
    …您想要字符串数组数组,即二维数组吗?ArrayList a1=new ArrayList()的可能重复项;for(条目:outmap.entrySet()){if(entry.getKey().indexOf(“Data”)!=-1{exports.add(entry.getValue());}}}还有一个表单“”,用于提供特定类型的数组。这不会执行请求的拆分。如果您希望其他人理解并可能对其进行投票,请提供答案的说明此方法与.Here arrayList.get(i)中的方法相同.type是arrayList中的一个值。您无论如何都可以得到它。我认为
    新字符串[0]
    是多余的,因为您总是有列表。因此您可以确定大小。您可以/应该用
    新字符串[list.size()]替换
    新字符串[0]
    当您的答案与现有答案相比更好,而现在由于使用原始类型而变得更差时,您的答案如何更好?
    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());
    
    List<String> stringList = Arrays.asList("abc#bcd", "mno#pqr");
        List<String[]> objects = stringList.stream()
                                           .map(s -> s.split("#"))
                                           .collect(Collectors.toList());
    
       String[] arr = new String[list.size()]; 
        arr = list.toArray(arr);
    
        String[] arr = new String[list.size()]; 
    
        arr = list.toArray(arr);