【发布时间】:2016-11-17 15:03:07
【问题描述】:
感谢您抽出宝贵时间阅读。
所以基本上我有两个“列表列表”,一个用于垂直线,一个用于水平线。这些“列表列表”中的每一个都包含 Line2D 元素的列表(我正在处理的每个形状都有一个列表)。我想将每个列表的每个 Line2D 与其他列表中的每个其他元素进行比较(例如:水平行中第一个列表的第一个元素与水平行的 OTHER 列表中的每个元素)。如果两条线比某个值更接近,就会发生一些事情。
我在这里找到了一些有用的技巧,关于如何将列表中的一个项目与所有其他项目进行比较,但如何为列表列表执行此操作却让我无法理解。我已经尝试了下面的代码并收到一个 Index Out of Bounds Exception Index: 3 Size: 3 Exception。我是一名初学者,因此非常感谢任何和所有建议。如果我需要提供更多代码或任何其他信息,请告诉我。谢谢!
for(List<Line2D> list : horizontal) {
for(int i = 0; i < list.size(); i++) {
for(int j =i+1; j < horizontal.get(j).size(); j++) {
if((Math.abs(list.get(i).getY1()) - Math.abs(horizontal.get(j).get(i).getY1())) < 0.4) {
//do something
}
}
}
}
【问题讨论】:
-
另外,这是最好的方法吗?我确定有一种更“优雅”的方式来比较这些元素?
-
List<Line2D>的元素不是列表,它们是Line2D元素。你有显示列表列表的代码 sn-p 吗? -
@TimBiegeleisen
horizontal是二维列表 -
@4castle 我看到了,问这个问题让我感到羞耻。
-
如果您碰巧使用的是 Java 8,那么使用
Stream会有一些真的 优雅的方法来做到这一点,但这完全取决于do something是什么
标签: java list for-loop foreach