首页 文章

在Java中将列表转换为数组

提问于
浏览
447

如何在Java中将 List 转换为 Array

检查以下代码:

ArrayList<Tienda> tiendas;
List<Tienda> tiendasList; 
tiendas = new ArrayList<Tienda>();

Resources res = this.getBaseContext().getResources();
XMLParser saxparser =  new XMLParser(marca,res);

tiendasList = saxparser.parse(marca,res);
tiendas = tiendasList.toArray();

this.adaptador = new adaptadorMarca(this, R.layout.filamarca, tiendas);
setListAdapter(this.adaptador);

我需要使用 tiendasList 的值填充数组 tiendas .

12 回答

  • -3

    我没有Java 8的最好的事情是:

    public static <T> T[] toArray(List<T> list, Class<T> objectClass) {
        if (list == null) {
            return null;
        }
    
        T[] listAsArray = (T[]) Array.newInstance(objectClass, list.size());
        list.toArray(listAsArray);
        return listAsArray;
    }
    

    如果有人有更好的方法来做到这一点,请分享:)

  • 0

    您可以使用toArray()api,如下所示,

    ArrayList<String> stringList = new ArrayList<String>();
    stringList.add("ListItem1");
    stringList.add("ListItem2");
    String[] stringArray = new String[stringList.size()];
    stringArray = stringList.toArray(stringList);
    

    数组中的值是,

    for(String value : stringList)
    {
        System.out.println(value);
    }
    
  • 34

    对于ArrayList,以下工作原理:

    ArrayList<Foo> list = new ArrayList<Foo>();
    
    //... add values
    
    Foo[] resultArray = new Foo[list.size()];
    resultArray = list.toArray(resultArray);
    
  • 0

    我遇到了解决它的代码片段 .

    //Creating a sample ArrayList 
    List<Long> list = new ArrayList<Long>();
    
    //Adding some long type values
    list.add(100l);
    list.add(200l);
    list.add(300l);
    
    //Converting the ArrayList to a Long
    Long[] array = (Long[]) list.toArray(new Long[list.size()]);
    
    //Printing the results
    System.out.println(array[0] + " " + array[1] + " " + array[2]);
    

    转换的工作原理如下:

    • 它创建一个新的Long数组,其大小与原始列表相同

    • 它使用新创建的ArrayList将原始ArrayList转换为数组

    • 它将该数组转换为Long数组(Long []),我恰当地命名为'array'

  • -1

    或者:

    Foo[] array = list.toArray(new Foo[list.size()]);
    

    要么:

    Foo[] array = new Foo[list.size()];
    list.toArray(array); // fill the array
    

    请注意,这仅适用于引用类型的数组 . 对于基本类型的数组,使用传统方式:

    List<Integer> list = ...;
    int[] array = new int[list.size()];
    for(int i = 0; i < list.size(); i++) array[i] = list.get(i);
    
  • 149

    这是有效的 . 的种类 .

    public static Object[] toArray(List<?> a) {
        Object[] arr = new Object[a.size()];
        for (int i = 0; i < a.size(); i++)
            arr[i] = a.get(i);
        return arr;
    }
    

    然后是主要方法 .

    public static void main(String[] args) {
        List<String> list = new ArrayList<String>() {{
            add("hello");
            add("world");
        }};
        Object[] arr = toArray(list);
        System.out.println(arr[0]);
    }
    
  • 2

    Java 8中的替代方案:

    String[] strings = list.stream().toArray(String[]::new);
    
  • -5

    这(Ondrej的回答):

    Foo[] array = list.toArray(new Foo[0]);
    

    这是我看到的最常见的习语 . 那些建议你使用实际列表大小而不是“0”的人误解了这里发生的事情 . toArray调用不关心给定数组的大小或内容 - 它只需要它的类型 . 如果采用实际类型会更好,在这种情况下,“Foo.class”会更加清晰 . 是的,这个习惯用法生成一个虚拟对象,但包含列表大小只是意味着你生成一个更大的虚拟对象 . 同样,该对象不以任何方式使用;它只是需要的类型 .

  • 0

    试试这个:

    List list = new ArrayList();
    list.add("Apple");
    list.add("Banana");
    
    Object[] ol = list.toArray();
    
  • 978

    我认为这是最简单的方法:

    Foo[] array = list.toArray(new Foo[0]);
    
  • -1

    从此页面获取的示例:http://www.java-examples.com/copy-all-elements-java-arraylist-object-array-example

    import java.util.ArrayList;
    
    public class CopyElementsOfArrayListToArrayExample {
    
      public static void main(String[] args) {
        //create an ArrayList object
        ArrayList arrayList = new ArrayList();
    
        //Add elements to ArrayList
        arrayList.add("1");
        arrayList.add("2");
        arrayList.add("3");
        arrayList.add("4");
        arrayList.add("5");
    
        /*
          To copy all elements of java ArrayList object into array use
          Object[] toArray() method.
        */
    
        Object[] objArray = arrayList.toArray();
    
        //display contents of Object array
        System.out.println("ArrayList elements are copied into an Array.
                                                      Now Array Contains..");
        for(int index=0; index < objArray.length ; index++)
          System.out.println(objArray[index]);
      }
    }
    
    /*
    Output would be
    ArrayList elements are copied into an Array. Now Array Contains..
    1
    2
    3
    4
    5
    
  • 0
    tiendas = new ArrayList<Tienda>(tiendasList);
    

    所有集合实现都有一个重载的构造函数,它接受另一个集合(模板 <T> 匹配) . 使用传递的集合实例化新实例 .

相关问题