【发布时间】:2013-05-10 01:59:19
【问题描述】:
我想将值插入到列表中,但前提是这些值尚未包含在列表中。到目前为止,我的代码创建了一个无限循环,因为当我将值添加到列表中时,列表的大小也会增加,因此无法满足 for 循环的终止条件。这是一个更大程序的一部分,e 是一种扩展 Point 的对象。 注意: e 扩展点。 e 有一个值(除了它从 Point 继承的坐标)。 如果 List 为空,我会将 e 存储在列表中。列表的类型为 e。 如果 List 不为空,我检查列表中是否存在与我输入的 e 具有相同点位置的 e。我不检查 e 对象,而是检查 x 和 y 值是否匹配。 更新代码:
List<e> listClosestFirst = new LinkedList<e>();
if (listClosestFirst.isEmpty()) {
listClosestFirst.add(e);
}
else {
for (int i = 0; i < listClosestFirst.size(); i++) {
if ((e.getLocation()).equals((listClosestFirst.get(i)).getLocation())) {
// do nothing, move on
} // end if
else {
listClosestFirst.add(e);
}
} // end for loop
} // end else statement
System.out.println("Closest First Memory: " + listClosestFirst);
【问题讨论】:
-
这可能会有所帮助...
LinkedList#contains -
这和旅行商问题有关系吗?
-
如果你更详细地解释你在做什么,我们也可以帮助你清理你的代码。或者提供代码示例来帮助您。
-
这与旅行商问题没有任何关系。这是我的项目的摘要(我需要使用列表的部分): 1)我需要创建自己的类,它扩展类 Point 并且还有一个 int 值(除了位置)。这是e。 2) 我需要使用随机生成器来随机生成 e 类的 x 和 y 坐标。 e类被随机放置在一个坐标平面上。 3) 我再次随机生成 x 和 y 坐标。如果 x 和 y 坐标与之前生成的任何值匹配,我将对象 e 添加到列表中。 (续)
-
(...cont) 但是,如果生成坐标的 e 已经在列表中,那么我应该跳过它并继续前进。包含似乎对我不起作用,因为它会检查列表中是否已经存在对象。我不想检查对象,而是如果 x 和 y 坐标匹配,那么我想跳过它。所以,为了使用 Contains,我实际上必须传入 if (listClosestFirst.contains(e.getLocation())) { },我认为这不会起作用,因为需要传入一个对象,而不是一个方法的一个对象。我现在正在清理代码。感谢您的评论