16

有没有办法ArrayListdouble类型定义一个?我都试过了

ArrayList list = new ArrayList<Double>(1.38, 2.56, 4.3);

ArrayList list = new ArrayList<double>(1.38, 2.56, 4.3);

第一个代码显示构造函数ArrayList<Double>(double, double, double)未定义,第二个代码显示在double.

4

9 回答 9

28

试试这个:

List<Double> list = Arrays.asList(1.38, 2.56, 4.3);

它返回一个固定大小的列表。

如果您需要可扩展列表,请将此结果传递给ArrayList构造函数:

List<Double> list = new ArrayList<>(Arrays.asList(1.38, 2.56, 4.3));
于 2013-07-05T04:46:23.397 回答
21
ArrayList list = new ArrayList<Double>(1.38, 2.56, 4.3);

需要改为:

List<Double> list = new ArrayList<Double>();
list.add(1.38);
list.add(2.56);
list.add(4.3);
于 2013-07-05T04:45:21.410 回答
4

试试这个,

ArrayList<Double> numb= new ArrayList<Double>(Arrays.asList(1.38, 2.56, 4.3));
于 2013-07-05T04:49:10.250 回答
3

您遇到问题是因为您无法同时构造ArrayList和填充它。您要么需要创建它,然后手动填充它:

ArrayList list = new ArrayList<Double>();
list.add(1.38);
...

或者,如果对您更方便,您可以ArrayList从包含您的值的原始数组中填充 。例如:

Double[] array = {1.38, 2.56, 4.3};
ArrayList<Double> list = new ArrayList<Double>(Arrays.asList(array));
于 2013-07-05T04:52:10.760 回答
2

您可以使用 Arrays.asList 获取一些列表(不一定是 ArrayList),然后使用 addAll() 将其添加到 ArrayList:

new ArrayList<Double>().addAll(Arrays.asList(1.38L, 2.56L, 4.3L));

如果您使用的是 Java6(或更高版本),您还可以使用带有另一个列表的 ArrayList 构造函数:

new ArrayList<Double>(Arrays.asList(1.38L, 2.56L, 4.3L));
于 2013-07-05T04:46:08.313 回答
2

使用番石榴

Doubles.asList(1.2, 5.6, 10.1);

或不可变列表

ImmutableList.of(1.2, 5.6, 10.1);
于 2013-07-05T04:57:47.713 回答
2

1)不必要的复杂”是恕我直言,在将其元素添加到 ArrayList 之前首先创建一个不可修改的列表。

2)解决方案与问题完全匹配:“有没有办法用双精度类型定义 ArrayList?

双重类型:

double[] arr = new double[] {1.38, 2.56, 4.3};

数组列表:

ArrayList<Double> list = DoubleStream.of( arr ).boxed().collect(
    Collectors.toCollection( new Supplier<ArrayList<Double>>() {
      public ArrayList<Double> get() {
        return( new ArrayList<Double>() );
      }
    } ) );

…这将创建与其 Java 1.8 短格式相同的紧凑和快速编译:

ArrayList<Double> list = DoubleStream.of( arr ).boxed().collect(
    Collectors.toCollection( ArrayList::new ) );
于 2018-10-10T06:10:30.003 回答
1

试试这个:

 List<Double> l1= new ArrayList<Double>();
 l1.add(1.38);
 l1.add(2.56);
 l1.add(4.3);
于 2013-07-05T04:53:12.680 回答
-1
double[] arr = new double[] {1.38, 2.56, 4.3};

ArrayList<Double> list = DoubleStream.of( arr ).boxed().collect(
    Collectors.toCollection( new Supplier<ArrayList<Double>>() {
      public ArrayList<Double> get() {
        return( new ArrayList<Double>() );
      }
    } ) );
于 2018-10-09T16:01:09.603 回答