Java 在保持可伸缩性的同时,如何记录多个对象的位置?
我试图让三个不同的“列表”对象一起工作 总而言之,我试图保存三个不同的变量,但它们都可以一起访问 如果我说:Java 在保持可伸缩性的同时,如何记录多个对象的位置?,java,list,Java,List,我试图让三个不同的“列表”对象一起工作 总而言之,我试图保存三个不同的变量,但它们都可以一起访问 如果我说: void main() { addStuff(1, 12, true); } void updateStuff(int i1, int i2, boolean b1) { list1.add(i1); list2.add(i2); list3.add(i3); } 然后保存三个相应的值 现在,我如何在仍然支持从列表中删除元素的情况下检索这些变量(也就是说
void main() {
addStuff(1, 12, true);
}
void updateStuff(int i1, int i2, boolean b1) {
list1.add(i1);
list2.add(i2);
list3.add(i3);
}
然后保存三个相应的值
现在,我如何在仍然支持从列表中删除元素的情况下检索这些变量(也就是说,如果我从每个列表中删除一个元素,即相互对应的元素)
如果我没有解释清楚,我会道歉的。如果需要的话,我很乐意提供更多的细节
谢谢 您可能应该创建一些包含这两个整数和一个布尔值的类 然后您可以有一个
列表
这样,您就不必担心在添加/删除元素时同步列表,因为您只有一个列表。您可能应该创建一些包含这两个int和一个boolean的类 然后您可以有一个
列表
这样,您就不必担心在添加/删除元素时同步列表,因为您只有一个列表。好吧,如果我从您对Eran答案的评论中了解到您想要做什么(最好就您的问题提供此信息,以便更多人可以帮助您),在笛卡尔平面上有一堆点,必须检查一个点是否离另一个太近。 为了避免每次需要这些信息时都需要进行大量检查,您需要将其存储在某种数据结构中,该数据结构将在每次插入新点时更新。 对吗 如果是,您可以创建表示此信息的图形:
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));
}
}
公共类MyPoints{
私有列表点=新的ArrayList();
私有列表tooCloseGraph=newArrayList();
公共无效添加点(点-点){
List newLine=new ArrayList();
对于(点p:点){
换行符.add(p.isTooClose(point));
}
newLine.add(true)//假设一个点离它自己太近
tooCloseGraph.add(换行符);
点。添加(点);
}
公共布尔IstoClose(int a,int b){
如果(a>b)
返回到closegraph.get(a)和get(b);
其他的
返回到closegraph.get(b)get(a);
}
公共布尔ISTOCLOSE(点a,桥b){
返回ISTOCOCLOSE(a点索引,b点索引);
}
}
我还没有测试过,但我认为它是有效的
干杯 好吧,如果我从你对Eran答案的评论中理解了你想要做什么(就你的问题提供这些信息以便更多的人可以帮助你可能是个好主意),你在笛卡尔平面上有很多点,必须检查一个点是否太接近另一个点。 为了避免每次需要这些信息时都需要进行大量检查,您需要将其存储在某种数据结构中,该数据结构将在每次插入新点时更新。 对吗 如果是,您可以创建表示此信息的图形:
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));
}
}
公共类MyPoints{
私有列表点=新的ArrayList();
私有列表tooCloseGraph=newArrayList();
公共无效添加点(点-点){
List newLine=new ArrayList();
对于(点p:点){
换行符.add(p.isTooClose(point));
}
newLine.add(true)//假设一个点离它自己太近
tooCloseGraph.add(换行符);
点。添加(点);
}
公共布尔IstoClose(int a,int b){
如果(a>b)
返回到closegraph.get(a)和get(b);
其他的
返回到closegraph.get(b)get(a);
}
公共布尔ISTOCLOSE(点a,桥b){
返回ISTOCOCLOSE(a点索引,b点索引);
}
}
我还没有测试过,但我认为它是有效的
干杯 似乎你正在尝试使用并行数组(或者在本例中是列表),其中一个对象列表可能更合适。是的,普遍的共识似乎是这样的。我来试一试,谢谢!似乎你正在尝试使用并行数组(或者在本例中是列表),其中一个对象列表可能更合适。是的,普遍的共识似乎是这样的。我来试一试,谢谢@DavidCa1226您的评论毫无意义,因为同样的限制也适用于您的客户lists@DavidCa1226你的评论毫无意义,因为同样的限制也适用于你的列表