【问题标题】:Converting ArrayList to Array in java在java中将ArrayList转换为Array
【发布时间】:2012-04-13 07:59:05
【问题描述】:

我有一个 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”

【问题讨论】:

标签: java arrays arraylist


【解决方案1】:

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

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

【讨论】:

  • ArrayList a1 = new ArrayList(); for (Entry entry : outmap.entrySet()) { if(entry.getKey().indexOf("Data") != -1){ exports.add(entry.getValue()); } }
  • 还有这种形式 'docs.oracle.com/javase/1.5.0/docs/api/java/util/…' 用于提供特定类型的数组。
【解决方案2】:
List<String> list=new ArrayList<String>();
list.add("sravan");
list.add("vasu");
list.add("raki");
String names[]=list.toArray(new String[list.size()])

【讨论】:

    【解决方案3】:
    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 , 构造的数组会调整大小。

    【讨论】:

    • 我认为new String[0] 是多余的,因为你总是有这个列表。这样你就可以确定大小了。
    • 您可以/应该将new String[0] 替换为new String[list.size()]
    【解决方案4】:
    String[] values = new String[arrayList.size()];
            for (int i = 0; i < arrayList.size(); i++) {
                values[i] = arrayList.get(i).type;
            }
    

    【讨论】:

    • 这里arrayList.get(i).type是arrayList中的一个值。无论如何你都可以得到它。
    【解决方案5】:

    根据我的问题,您对迭代所做的事情并没有错。它为您提供了一个有效的 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() 方法。

    【讨论】:

      【解决方案6】:
      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]);
          }
      }
      

      【讨论】:

        【解决方案7】:

        这是给定场景的解决方案 -

        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];
        } 
        

        【讨论】:

          【解决方案8】:
          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+" ");
            }
          
          }
          

          【讨论】:

          【解决方案9】:

          这是您想要的正确答案,我已经在 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());
          

          【讨论】:

          • 现有的答案如何更好,而现在由于使用原始类型而变得更糟?
          【解决方案10】:

          这可以使用流来完成:

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

          返回值将是拆分字符串的数组。 这避免了将arraylist转换为数组并执行操作。

          【讨论】:

            【解决方案11】:

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

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

              Object[] 数组 = list.toArray();

            2. public T[] toArray(T[] a) - 这样我们将创建数组并以 toArray 取它 作为参数然后返回它

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

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

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

            【讨论】:

              【解决方案12】:

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

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

              【讨论】:

                猜你喜欢
                • 2016-05-11
                • 2017-06-02
                • 2016-03-01
                • 2018-04-29
                • 2020-04-26
                • 1970-01-01
                • 1970-01-01
                • 2012-03-16
                • 2013-02-13
                相关资源
                最近更新 更多