在Java中,使用java.util.Arrays以下代码:
float[] arr = {(float)0.2, (float)4.5};
Float[] brr = {new Float(0.2), new Float(4.5)};
Float x = new Float(4.5);
float y = (float)4.5;
System.out.println(Arrays.asList(arr).indexOf(x));
System.out.println(Arrays.asList(arr).indexOf(y));
System.out.println(Arrays.asList(brr).indexOf(x));
System.out.println(Arrays.asList(brr).indexOf(y));
Run Code Online (Sandbox Code Playgroud)
给
-1
-1
1
1
Run Code Online (Sandbox Code Playgroud)
我的问题:如何在数组中搜索4.5的索引arr?
我认为这Arrays.asList(arr)会产生一个对象列表,arr但它的行为与其他数组不同,brr.
Arrays.asList以a T...为参数.当参数是一个对象数组时,它就像你写的那样传递Arrays.asList(new Float(0.2), new Float(4.5)).
在第二种情况下,参数是一个基元数组.这里,Java编译器决定将整个数组视为单个对象.因此,您将传递一个包含单个元素的数组,即浮点数组.
要确认这一点,请尝试以下操作:
Arrays.asList(arr).indexOf(arr) // returns 0
由于该方法是键入的,因为<T> List<T> asList(T...ts)只允许第二个语句:
System.out.println(Arrays.<Float>asList(arr).indexOf(x)); //Error
System.out.println(Arrays.<Float>asList(brr).indexOf(x)); //List<Float>
Run Code Online (Sandbox Code Playgroud)
原始类型中的第一个不能在参数中键入Float.
将其转换为List的语句如下:
List<float[]> l = Arrays.<float[]>asList(arr); //The array is the only index in the List
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
227 次 |
| 最近记录: |