首页 / JAVA / 在Java中从多维数组中删除项目
在Java中从多维数组中删除项目
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Java中从多维数组中删除项目,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1923字,纯文字阅读大概需要3分钟。
内容图文
![在Java中从多维数组中删除项目](/upload/InfoBanner/zyjiaocheng/784/9adbd8d6cb004a01912adad7ae58708a.jpg)
我想从三维数组中删除项目.
我知道这样做的最好方法之一是将数组转换为列表,并在迭代原始数组时从列表中删除这些项,然后将列表转换回数组并返回它.
我试过这个,但回到阵列时出现类型不匹配.我怀疑从数组转换到列表时我没有对尺寸做过什么.
建议吗?
import java.util.List;
import java.util.Arrays;
public class RepatitionRemoval {
public float[][][] process(float[][][] data) {
//this method with step through all of the the strokes and remove
//points which occupy the same position. This should help with time
//warping regconition
//Change the array to a list
List points = Arrays.asList(data);
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[i].length; j++) {
for (int k = 0; k < data[i][j].length-1; k++) {
//if the current coordinate is the same as the one next
//then remove it
if (data[i][j][k] == data[i][j][k+1]) {
points.remove(data[i][j][k]);
}
}
}
}
float[][][] returnData = points.toArray();
return returnData;
}
}
解决方法:
首先,以下方法不能完成您的想法:
//Change the array to a list
List points = Arrays.asList(data);
顺便说一句好的IDE会自动将其转换为:
List<float[][]> points = Arrays.asList(data);
所以,当你接下来做一个:
points.remove(data[i][j][k])
会发生什么是data [i] [j] [k] primitive被自动装箱到Float包装器类,然后remove方法检查它是否包含任何等于你的包裹Float的元素.它会检查整个列表并且找不到任何Float因为…你有一个float [] []列表.所以基本上你的代码永远不会从列表中删除任何元素.
但无论如何,你应该知道如果你找到一个在remove方法中匹配的元素,你会得到一个UnsupportedOperationException,因为Arrays.asList只是包装你的数组而你的“list”仍然支持float [] [] []阵列.而你无法调整数组的大小.
然后,无论如何,您通常无法使用==来比较浮点数:
if (data[i][j][k] == data[i][j][k+1]) {
因为它通常是检查两个浮点数是否相等的可怕方法.应使用epsilon比较浮动数字(您应始终跟踪错误传播).
关于你的最后一行,你可以回转到float [] [] []但是它没有意义,因为你在第一行中创建的float [] []列表由原始的float [] [] []支持,不能修改(好吧,你可以修改单个元素,但不能调整它的大小).
内容总结
以上是互联网集市为您收集整理的在Java中从多维数组中删除项目全部内容,希望文章能够帮你解决在Java中从多维数组中删除项目所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。