Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取集合时出现问题。双精度数组的shuffle()正在工作_Java_Jsp_Collections_Javabeans_Shuffle - Fatal编程技术网

Java 获取集合时出现问题。双精度数组的shuffle()正在工作

Java 获取集合时出现问题。双精度数组的shuffle()正在工作,java,jsp,collections,javabeans,shuffle,Java,Jsp,Collections,Javabeans,Shuffle,我试图在JavaBean中洗牌一个double数组,以便在JSP文件中使用 在java bean的默认构造函数中,我有: amounts = new double[] {0.5, 1, 1.5, 2, 2.5. 3, 3.5, 4}; Collections.shuffle(Arrays.asList(amounts)); 我可以调用bean的方法,但由于某些原因,amounts数组保持不变,因此它不是无序的,就是默认构造函数没有执行。没有抛出错误,因此我相信可能是构造函数没有执行,但我无

我试图在JavaBean中洗牌一个double数组,以便在JSP文件中使用

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

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

Collections.shuffle(Arrays.asList(amounts));
我可以调用bean的方法,但由于某些原因,amounts数组保持不变,因此它不是无序的,就是默认构造函数没有执行。没有抛出错误,因此我相信可能是构造函数没有执行,但我无法找出原因

在我的JSP中,我使用:

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

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

数组。asList(amounts)
期望
T…
,其中
T
是一种对象类型。这里的问题是您传递的是
double[]
,因此您的列表实际上是
list
——而不是
list
。其他答案不正确,因为
数组.asList
保证“写入”到支持数组

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

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


请注意,它现在将正常工作:-)

为什么要使用
double[]
而不是
List
?酷。我试过了,成功了。它是如何改变原来的?通过指针?线我不认为这是一个线程。@tuğrulbüyükıkık
数组。asList
使用一个只需实现
List
RandomAccess
并使用底层数组的实现。仅交换元素(“此实现向后遍历列表…将随机选择的元素交换到“当前位置”),这不需要操作
数组。asList
不支持(即插入和删除)。@cheeseman
Double
是一种对象类型,特别是编译器自动处理的
double
double
是一种基本数据类型,而
double[]
和所有数组类型都是对象类型;将
double[]
传递给
数组。asList
需要
T..
参数作为
T
的某个对象类型,并且由于传递了单个对象,它认为您需要
List
@cheeseman,方法是显式地将
数量
设置为
double[]
类型,然后编译器识别您传递了一个
Double
对象数组(
T..
匹配
Double[]
,因为
T
Double
),从而创建
列表,实际上可以有意义地对其进行洗牌(按照您预期的方式)。另一方面,洗牌一个单一对象的列表实际上并没有任何作用。我想我理解了,一些非常有趣的东西,我将阅读更多内容,非常感谢!
amounts = new Double[] { 0.5, 1.0, 1.5, 2.0, 2.5, 3, 3.5, 4.0 };