我试图获得三个不同的列表'对象一起工作。
总结一下我想要做的事情,我试图保存三个不同的变量,但让它们全部被一起访问。
所以,如果我说:
void main() {
addStuff(1, 12, true);
}
void updateStuff(int i1, int i2, boolean b1) {
list1.add(i1);
list2.add(i2);
list3.add(i3);
}
然后会保存三个相应的值。
现在,我将如何检索这些变量,同时仍然支持从列表中删除元素(也就是说,如果我从每个列表中删除一个元素 - 彼此对应的元素。)
如果我没有清楚地解释自己,请道歉 - 如果需要,我会很乐意提供更多细节。
谢谢!
答案 0 :(得分:5)
您应该创建一个包含这两个整数和一个布尔值的类。
然后你可以拥有一个List<YourClass>
。
public class YourClass
{
private int a;
private int b;
private boolean c;
public YourClass (int a, int b, boolean c) {
this.a=a;
this.b=b;
this.c=c;
}
// add some getters and setters here
}
void updateStuff(int i1, int i2, boolean b1)
{
list.add(new YourClass(i1,i2,b1));
}
这样您就不必担心在添加/删除元素时同步列表,因为您只有一个列表。
答案 1 :(得分:1)
好吧,如果我从你对伊兰答案的评论中理解你要做的事情(在你的问题上提供这些信息可能是一个好主意,这样更多的人可以帮助你),你在笛卡尔平面上有一堆点,必须检查一个点是否太靠近另一个。 为了避免在每次需要这些信息时需要这么多检查,您希望将其存储在某种数据结构中,每次插入新点时都会更新。 这是对的吗?
如果是这样,您可以创建一个表示此信息的图表:
public class MyPoints {
private List<Point> points = new ArrayList<>();
private List<List<Boolean>> tooCloseGraph = new ArrayList<>();
public void addPoint(Point point){
List<Boolean> newLine = new ArrayList<>();
for(Point p : points){
newLine.add(p.isTooClose(point));
}
newLine.add(true) //Assuming a point is too close to itself
tooCloseGraph.add(newLine);
points.add(point);
}
public boolean isTooClose(int a, int b){
if(a > b)
return tooCloseGraph.get(a).get(b);
else
return tooCloseGraph.get(b).get(a);
}
public boolean isTooClose(Point a, Pont b){
return isTooClose(points.indexOf(a), points.indexOf(b));
}
}
我没有测试过,但我认为它有效。
干杯!