Java 基于参数';s值 private List批处理(List\u POIs) { 列表_POIs_batched=new ArrayList(); 对于(PoI poi1:_PoI) { 对于(PoI poi2:_PoI) { 如果(poi1.getId()==poi2.getId()) { PoI newPoI=新PoI(poi1.getId(),poi1.getServiceTime()+poi2.getServiceTime()); _批量添加的POI_(新POI); } } } 分批返回; }
我需要找到并批处理具有相同getId()值的元素。上面给出的代码的问题是我正在搜索成对的元素。但是,可能有两个以上的元素具有相同的getId()值。 如何解决这个问题?使用Java 基于参数';s值 private List批处理(List\u POIs) { 列表_POIs_batched=new ArrayList(); 对于(PoI poi1:_PoI) { 对于(PoI poi2:_PoI) { 如果(poi1.getId()==poi2.getId()) { PoI newPoI=新PoI(poi1.getId(),poi1.getServiceTime()+poi2.getServiceTime()); _批量添加的POI_(新POI); } } } 分批返回; },java,list,arraylist,batch-processing,Java,List,Arraylist,Batch Processing,我需要找到并批处理具有相同getId()值的元素。上面给出的代码的问题是我正在搜索成对的元素。但是,可能有两个以上的元素具有相同的getId()值。 如何解决这个问题?使用映射(我假设id是int-或Integer-键入的;无论如何,如果它是整数,请使用.equals()而不是=) 您可以保留共享相同id的PoIs列表。然后,您可以轻松地计算它们的服务时间 编辑(代码段): Map poisPerId=new HashMap(); 对于(PoI PoI:_PoI){ 整数id=poi.getId
映射(我假设id是int
-或Integer
-键入的;无论如何,如果它是整数
,请使用.equals()
而不是=
)
您可以保留共享相同id的PoI
s列表。然后,您可以轻松地计算它们的服务时间
编辑(代码段):
Map poisPerId=new HashMap();
对于(PoI PoI:_PoI){
整数id=poi.getId();
List pois=poiperid.get(id);
if(pois==null){
pois=新的ArrayList();
poiperid.put(id,pois);
}
poi.add(poi);
}
private List<PoI> batch(List<PoI> _POIs)
{
List<PoI> _POIs_batched = new ArrayList<PoI>();
for (PoI poi1 : _POIs)
{
for (PoI poi2 : _POIs)
{
if (poi1.getId() == poi2.getId())
{
PoI newPoI = new PoI(poi1.getId(),poi1.getServiceTime()+poi2.getServiceTime());
_POIs_batched.add(newPoI);
}
}
}
return _POIs_batched;
}
Map<Integer, List<PoI>> poisPerId = new HashMap<>();
for (PoI poi : _POIs){
Integer id = poi.getId();
List<PoI> pois = poisPerId.get(id);
if(pois == null){
pois = new ArrayList<PoI>();
poisPerId.put(id, pois);
}
pois.add(poi);
}