51,396
社区成员




sql?t group by i_record_id,x,y啊
懒得多想.. sort一下慢慢判断就是. 反正你啥都要
你可以先求出每个record_id的xy距离,然后new HashMap,key存record_id,value存yx距离
我的理解楼主是要求i_record_id相同,所有相邻时间点的点之间的距离之和 首先查询列表的时候按照i_record_id,time排序 数据对应的数据结构 public class Record{ int x; int y; Date time; int i_record_id; int iuser_id; int name; } List<Record> list = getRecordsOrderByRecordIdAndTime(); // 按照i_record_id 分组,每个分组记录已经按时间排序 Map<Integer,list<Record>> map = new HashMap<>(); for(Record record:list){ List <Record> tmp; int key =record.getIRecordId(); if(map.contains(key){ tmp=map.get(key); }else{ tmp=new ArrayList<>(); map.put(key,tmp); } tmp.add(record); } // 计算距离并保存 Map<Integer,Float> resultMap = new HashMap<>(); Iterator it = map.entrySet().iterator() while(it.hasNext()){ Entry entry = it.next; List<Record> value = entry.value(); float distance = 0.0; for(int i=0;i<value.size()-1){ distance += distance(value.get(i),value.get(i+1)); } resultMap.put(entry.key(),distance); }