【问题标题】:Convert ArrayList to Double Array in java [duplicate]在java中将ArrayList转换为Double Array [重复]
【发布时间】:2018-04-29 15:59:53
【问题描述】:

如何在Java6中将ArrayList转换为双精度数组?

 List lst = new ArrayList();
 double[] dbl=null;
 lst.add(343.34);
 lst.add(432.34);

如何将上面的列表转换成数组?

【问题讨论】:

  • 你试过了吗?你搜索过吗?这是一个常见的问题,你可以找到很多答案。另外,请在List 中添加一个类型,例如List<Double> ...如果不这样做会很混乱
  • @TrầnAnhNam 不是真的重复。在那篇文章中,ArrayList 包含 String 对象,这里它包含 Double 对象。
  • 您的代码与您的问题不符。双数组 (Double[]) 不是双数组 (double[]) - 它们是不同的类型。你想转换成哪一个?
  • 在你发布代码之前,请她要求其他人帮助你,检查你的代码编译时没有错误或警告消息。

标签: java arrays arraylist type-conversion


【解决方案1】:

您可以直接将List 转换为包装类的Array。 请尝试以下操作:

List<Double> lst = new ArrayList<>();
Double[] dblArray = new Double[lst.size()];
lst.add(343.34);
lst.add(432.34);
dblArray = lst.toArray(dblArray);

【讨论】:

  • 不需要指定大小。只是dblArray =lst.toArray(new Double[0])
  • @Nonika 如果您不指定大小(或大小不正确),将自动创建一个新数组。这通常无关紧要,但仍然存在显着差异,因为您的代码将创建 2 个数组,而答案中的代码只创建一个。
【解决方案2】:
List<Number> lst = new ArrayList<>();
Collections.addAll(lst, 3.14, -42);
double[] dbl = lst.stream()
    .map(Number::cast) // Or possibly Double::cast when List lst.
    .mapToDouble(Number::doubleValue)
    .toArray();

List<Double> lst = new ArrayList<>();
Collections.addAll(lst, 3.14, -42.0);
double[] dbl = lst.stream()
    .mapToDouble(Double::doubleValue)
    .toArray();

mapToDouble 将持有 Stream 的 Object 转换为原始双精度的 DoubleStream

【讨论】:

    【解决方案3】:

    有了这个,您将制作列表并添加您喜欢的内容。然后让数组大小一样,从前到后填充。

    public static void main(String[] args){
            List lst = new ArrayList();
            lst.add(343.34);
            lst.add(432.34);
            System.out.println("LST " + lst);
    
            double[] dbl= new double[lst.size()];
            int iter = 0;
            for (Object d: lst
                 ) {
                double e = (double) d;
                dbl[iter++] = e;
            }
            System.out.println("DBL " + Arrays.toString(dbl));
        }
    

    结果:LST [343.34,432.34] DBL [343.34,432.34]

    【讨论】:

      猜你喜欢
      • 2017-06-02
      • 1970-01-01
      • 2015-01-09
      • 1970-01-01
      • 2012-04-13
      • 2015-02-04
      • 2019-05-17
      • 1970-01-01
      • 2015-10-22
      相关资源
      最近更新 更多