发出获取Collections.shuffle()的双精度数组工作

时间:2012-09-08 18:01:08

标签: java jsp collections javabeans shuffle

我正在尝试将java bean中的双精度数组混洗,以便在JSP文件中使用。

在我的java bean的默认构造函数中,我有:

amounts  = new double[] {0.5, 1, 1.5, 2, 2.5. 3, 3.5, 4};

Collections.shuffle(Arrays.asList(amounts));

我可以调用bean的方法,但由于某种原因,amount数组保持不变,所以它要么不是shuffling,要么默认构造函数没有执行。没有错误被抛出,所以我认为它可能是构造函数没有执行但我无法弄清楚原因。

在我的JSP中,我使用:

<jsp:useBean id="myBean" class="logic.logicBean" scope = "session" />

我想这样做,默认构造函数会执行,这是错误的吗?

1 个答案:

答案 0 :(得分:10)

Arrays.asList(amounts)期望T...,其中T是对象类型。这里的问题是您传递了double[],因此您的列表实际上是List<double[]> - 而不是List<Double>。其他答案不正确,因为Arrays.asList保证“直写”到后备阵列。

Arrays.asList ...

  

返回由指定数组支持的固定大小的列表。 (对返回列表的更改“直写”到数组。)

要证明这一点,请尝试将amounts声明为Double[],并允许编译器自动装箱(同时确保更正文字的类型,即添加.0或{{ 1}}后缀):

D

请注意,它现在可以正常运行: - )