【问题标题】:How to convert List<Integer> to Integer[] in java?如何在 Java 中将 List<Integer> 转换为 Integer[]?
【发布时间】:2015-11-29 06:11:04
【问题描述】:

我试图将IntegerArrayList 转换为Integer[]

Integer[] finalResult = (Integer[]) result.toArray();

但我有一个例外

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;

请帮帮我。

【问题讨论】:

    标签: java arrays arraylist


    【解决方案1】:

    您需要使用接受泛型参数的toArray() 版本:

    Integer[] finalResult = new Integer[result.size()];
    result.toArray(finalResult);
    

    或者,作为一个单行:

    Integer[] finalResult = result.toArray(new Integer[result.size()]);
    

    【讨论】:

      【解决方案2】:

      您不能将List 转换为数组,因为List 不是数组。以下是将List&lt;Integer&gt; 转换为Integer[] 的两种方法。

      List<Integer> list = Arrays.asList(1, 2, 3);
      Integer[] arr = list.toArray(new Integer[list.size()]);
      Integer[] arr2 = list.stream().toArray(Integer[]::new); // Java 8 only
      

      【讨论】:

        【解决方案3】:

        List.toArray() 返回一个对象数组。请改用List.toArray(T[])

        Integer[] finalResult = (Integer[]) result.toArray(new Integer[result.size()]);
        

        【讨论】:

        • 不需要演员表。返回类型已经是T[],它在编译时绑定到Integer[]
        【解决方案4】:

        你需要初始化数组。像这样试试

        Integer[] finalResult = new Integer[result.size()];
        finalResult = result.toArray(finalResult);
        

        【讨论】:

          【解决方案5】:

          您可以通过多种方式做到这一点:

          第一种方法

          List<T> list = new ArrayList<T>();
          
          T [] countries = list.toArray(new T[list.size()]);
          

          示例:

          List<String> list = new ArrayList<String>();
          
          list.add("India");
          list.add("Switzerland");
          list.add("Italy");
          list.add("France");
          
          String [] countries = list.toArray(new String[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);
          

          您还可以在此处找到一些示例代码 - http://www.tutorialspoint.com/java/util/arraylist_toarray.htmhttp://examples.javacodegeeks.com/core-java/util/list/java-list-to-array-example/

          【讨论】:

          • 第4种方法需要去掉myArray = new String();
          • 我从您的回答中了解到 Java 8-list.stream 的一种新方法。为你的答案 +1 了
          【解决方案6】:

          这里的答案是出于某种根本不需要的原因在toArray() 方法中使用list.size()。您可以只传递一个大小为 0 的空整数数组。

          简单易行。看看:

          List<Integer> yourList = List.of(1, 2, 3, 4, 5);
          Integer[] intArray = yourList.toArray(new Integer[0]);
          

          【讨论】:

            猜你喜欢
            • 2021-08-20
            • 2019-08-24
            • 1970-01-01
            • 2022-09-30
            • 2013-08-03
            • 1970-01-01
            相关资源
            最近更新 更多