java - java `indexOf` 用于`float[]`
问题描述
在 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));
给
-1
-1
1
1
我的问题:如何在数组中搜索 4.5 的索引arr
?
我认为这Arrays.asList(arr)
会列出一个对象列表,arr
但它的行为与另一个数组不同,brr
.
解决方案
Arrays.asList
以 aT...
作为参数。当参数是一个对象数组时,它就像你写的一样被传递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>
第一个原始类型不能在参数处键入为 Float。
将其转换为 List 的语句如下:
List<float[]> l = Arrays.<float[]>asList(arr); //The array is the only index in the List
推荐阅读
- regex - 打印正则表达式的正确结果
- machine-learning - Arrays with inconsistent numbers
- checkbox - c# Loop through multiple bunifu checkboxes
- javascript - JavaScript:如何检查对象方法是否具有有效结果
- python - 如何获得最后一个随机 int 生成?
- android - 如何将 2 路数据绑定到 livedata
会员? - reactjs - React:根据孩子的状态设置父母的状态?
- sharepoint - 查看一个 SharePoint 文档库下的所有文件
- typescript - TypeScript record and play raw pcm audio
- sql - 在 Django 上注册时出现 login_user 问题