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

che*_*man 2 java collections jsp shuffle javabeans

我试图在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));
Run Code Online (Sandbox Code Playgroud)

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

在我的JSP中我使用:

<jsp:useBean id="myBean" class="logic.logicBean" scope = "session" />
Run Code Online (Sandbox Code Playgroud)

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

old*_*inb 10

Arrays.asList(amounts)期望T...,T对象类型在哪里.这里的问题是你要经过double[],所以你的名单实际上是List<double[]>- 不是List<Double>.其他答案是不正确的,因为Arrays.asList保证"直写"到后备阵列.

Arrays.asList......

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

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

amounts = new Double[] { 0.5, 1.0, 1.5, 2.0, 2.5, 3, 3.5, 4.0 };
Run Code Online (Sandbox Code Playgroud)

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