gpt4 book ai didi

java - 比较列表列表中的一个元素

转载 作者:行者123 更新时间:2023-11-30 02:51:57 24 4
gpt4 key购买 nike

感谢您花时间阅读。

所以基本上我有两个“列表的列表”,一个用于垂直线,一个用于水平线。这些“列表的列表”中的每一个都包含 Line2D 元素的列表(我正在处理的每个形状都有一个列表)。我想将每个列表的每个 Line2D 与其他列表中的每个其他元素进行比较(例如:水平线中第一个列表的第一个元素与水平线其他列表中的每个元素)。如果两条线接近某个值,就会发生某些情况。

我在这里找到了一些关于如何将列表中的一项与所有其他项进行比较的有用提示,但如何对列表列表执行此操作却让我无法理解。我已尝试下面的代码并收到索引越界异常索引:3大小:3异常。我是一名初级编码员,因此非常感谢任何和所有建议。如果我需要提供更多代码或任何其他信息,请告诉我。谢谢!

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
}
}
}
}

最佳答案

两个外for循环将触及 List<Line2D> 的所有唯一对可以取自horizontal 。对于每个这样的两个列表,内部两个 for循环迭代所有可能的条目组合,计算 Y1 中差异的绝对值值,并在差异小于某个阈值时采取行动。

for (int i=0; i < horizontal.size(); ++i) {
for (int j=i+1; j < horizontal.size(); ++j) {
List<Line2D> line1 = horizontal.get(i);
List<Line2D> line2 = horizontal.get(j);

for (int k=0; k < line1.size(); ++k) {
for (int l=0; l < line2.size(); ++l) {
if (Math.abs(line1.get(k).getY1() - line2.get(l).getY1()) < 0.4) {
// do something
}
}
}
}
}

如果有人可以发布一个更优雅的解决方案(可能使用 Java 8 流),那将会很有趣。

关于java - 比较列表列表中的一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38378545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com