web-dev-qa-db-ja.com

javaでArrayListを配列に変換

「abcd#xyz」や「mnop#qrs」などの値を持つArrayListがあります。私はそれを配列に変換してから、区切り文字として#で分割し、配列に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」と言って失敗しました

助けてください。

63
Shruthi

車輪を再発明する必要はありません。 heretoArray()メソッドです:

String []dsf = new String[al.size()];
al.toArray(dsf);
116
talnicolas
List<String> list=new ArrayList<String>();
list.add("sravan");
list.add("vasu");
list.add("raki");
String names[]=list.toArray(new String[list.size()])
55
List<String> list=new ArrayList<String>();
list.add("sravan");
list.add("vasu");
list.add("raki"); 
String names[]=list.toArray(new String[0]);

最後の行(新しいString [0])が表示された場合、サイズを指定する必要はありません。リストの長さがわからない場合があります。配列のサイズが変更されます。

6
nandy
String[] values = new String[arrayList.size()];
        for (int i = 0; i < arrayList.size(); i++) {
            values[i] = arrayList.get(i).type;
        }
2
Anand
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+" ");
  }

}
1

繰り返しであなたがしたことは、質問に基づいて私ができることから間違っていません。有効なStringオブジェクトの配列を提供します。ただし、別の回答で述べたように、ArrayListオブジェクトで使用可能なtoArray()メソッドを使用する方が簡単です=> 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()メソッドを提供する必要があります。

1
hcpl

これはあなたが望む正しい答えであり、このソリューションは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());
1
Abhinav khosla

ここにあなたが与えられたシナリオのためのソリューションがあります-

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];
} 
1
kundan bora
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]);
    }
}
1
kandarp

これは、ストリームを使用して実行できます。

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

戻り値は、分割文字列の配列になります。これにより、arraylistから配列への変換および操作の実行が回避されます。

0
Shreyas