Ответ 1
Вам не нужно изобретать колесо, здесь метод toArray()
:
String []dsf = new String[al.size()];
al.toArray(dsf);
У меня есть 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"
Вам не нужно изобретать колесо, здесь метод 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]);
если вы видите последнюю строку (новая String [0]), вам не нужно указывать размер, есть время, когда мы не знаем длину списка, поэтому начинаем с того, чтобы дать ему 0, построенный массив изменит размер.
String[] values = new String[arrayList.size()];
for (int i = 0; i < arrayList.size(); i++) {
values[i] = arrayList.get(i).type;
}
То, что вы сделали с итерацией, не из того, что я могу сделать из этого на основе вопроса. Он дает вам действительный массив объектов String. Как упоминалось в другом ответе, однако проще использовать метод toArray(), доступный для объекта ArrayList = > 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() для объекта, который вы печатаете.
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];
}
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+" ");
}
}
Это правильный ответ, который вы хотите, и это решение, которое я запускал самостоятельно на 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());
Это можно сделать с помощью потока:
List<String> stringList = Arrays.asList("abc#bcd", "mno#pqr");
List<String[]> objects = stringList.stream()
.map(s -> s.split("#"))
.collect(Collectors.toList());
Возвращаемое значение будет массивом разделенной строки. Это позволяет избежать преобразования массива в массив и выполнения операции.