java中ArrayList到Array的转换
我有一个数组列表,其值为“abcd#xyz”和“mnop#qrs”。我想把它转换成一个数组,然后用#作为分隔符拆分它,并在一个数组中使用abcd,mnop,在另一个数组中使用xyz,qrs。我尝试了以下代码: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
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;iList=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);