0

我将在这里输入我的代码,然后我将在下面解释我的问题。

for (int i = 0; i < sales.totalSales(); i++) {
            EntidadGeo gec = sales.getSale(i).getCustomer();
            EntidadGeo get = sales.getSale(i).getStore();                               
            int[] c = geo.georeferenciar(sales.getSale(i).getCustomer().getCP(), ventas.getVenta(i).getCCustomer().getCalle(), ventas.getVenta(i).getCCustomer().getProvincia());
            gec.setX(c[0]);
            gec.setY(c[1]);             
            int[] c2 = geo.georeferenciar(ventas.getSale(i).getStore().getCP(), ventas.getVenta(i).getStore().getCalle(), ventas.getSale(i).getStore().getProvincia());
            get.setX(c2[0]);
            get.setY(c2[1]);
            mapaventas.representar(gec, get);
            }

我有那个for循环,我想在我的项目中做的是在地图上打印。关键是我需要在地图上绘制的是客户和商店,一个商店可以同时向多个客户销售。在我的项目中我使用 MVC 模式,这部分属于控制器部分,在模型部分我绘制地图。它现在有效,但问题是我的项目吸引了一位客户和一家商店,而不是每家商店 4 位客户。

谢谢

4

2 回答 2

1

Store听起来您的数据库在和之间具有一对多的关系Customer。相应的对象模型可能是List<Map<Store, List<Customer>>>. 因为 a 的Customer交易价格可能不止一个Store,所以您想“检查那里是否IdStore已经绘制了 a,然后我不想绘制它”。

一种方法是遍历List并将条目添加到Set<Location>. 因为Set拒绝重复元素的实现,只存在一个副本,并且不需要显式检查。作为使用 的具体示例JMapViewer,您将在MapMarkermapViewerfor eachLocation中添加一个Set,如下所示。

于 2013-05-11T17:33:15.753 回答
1

你的问题在这里:

mapaventas.representar(gec, get);

所以看起来你有一个Map<Vendor, Client>只会关联每个供应商的一个客户。我必须对此进行猜测,因为我们不知道上述方法的作用。如果我是正确的,一个更好的解决方案可能是使用Map<Vendor, ArrayList<Client>>. 这样一个供应商就可以与多个客户相关联。然后你会做类似的事情

ArrayList<Client> getList = mapaventas.get(gec);
// if the above is null, create the arraylist first and put it 
// and the gec into the map.
getList.add(get);

请注意,我的变量名称和类型与您的不同,但希望您能理解我试图传达的概念。如果没有,请询​​问。

于 2013-05-11T16:34:26.940 回答