直升机。我有两个arraylist:
public static ArrayList<Shop> shops;
字段:public static double dist;
和第二个arraylist:public static ArrayList<Double> for_sort_shops;
我也有一个代码:
for (int i = 0; i < shops.size(); i++) {
Log.i("palval", "for_sort_shops.get(i) = "
+ for_sort_shops.get(i));
}
for (int i = 0; i < shops.size(); i++) {
shops.get(i).dist = for_sort_shops.get(i);
}
Log.i("palval", "---------------------------------------");
for (int i = 0; i < shops.size(); i++) {
Log.i("palval", "shops.get(i).dist = "
+ shops.get(i).dist);
}
我得到了什么结果?
怎么可能?! 帮助我理解。
答案 0 :(得分:10)
您声明dist
静态,这意味着它的值在类级别定义并在所有实例之间共享。在您的程序中,您只能看到分配给它的最后一个值。
答案 1 :(得分:3)
你的领域是
public static double dist
因为它是static
,所以整个dist
类只有一个Shops
值。
您需要为每个static
设置此值非Shop
才能拥有自己的dist
值。
答案 2 :(得分:2)
由于您的字段public static double dist;
是静态的,因此在整个代码执行过程中只有一个字段。所以你要一遍又一遍地更新同一个变量。从dist的static
处取下,以达到理想的效果。