如何在每个列表中添加具有相同ID的元素?

时间:2016-05-05 08:16:40

标签: java list

我想在每个列表中放入具有相同id的元素,然后将所有这些列表放到一个列表中,这是我的表,如图所示" SQL请求的图像结果& #34;重复id = 1,所以我希望有一个Java列表,其中只包含id = 1的元素,以及另一个id = 2的Java列表...... Image Result of SQL request

enter image description here

这是我不完整的代码:

//Calculate Distance Traveled of a device in a specified 2 dates VERSION 2
public void  getDistanceTraveled2(Date StartDate,Date EndDate) {

    boolean exist=false;
    allDeviceList = (ArrayList<Device>) deviceBean.getListalldevice();// Get list of all device

    for(int i=0;i<allDeviceList.size();i++)
    {
        List<Eventdata> list = deviceBean.getLatAndLongDeviceId(); // get the id lat and long for each device
        List<Eventdata> list2 = new ArrayList<Eventdata>();

        while (list.size()!=0){


            String idCourant = list.get(i).getDevice().getDeviceid(); // get the first id
            String idNext = list.get(i+1).getDevice().getDeviceid(); // get the second id 

            if (idCourant == idNext)
            {
                //double distance = Point2D.distance(x1, y1, x2, y2);
                double  distance =  Point2D.distance(list.get(i).getLatitude(),list.get(i).getLongitude(),list.get(i+1).getLatitude(),list.get(i+1).getLongitude());//Calculate distance
                list2.add((Eventdata) Arrays.asList(idCourant, distance)); // store id and distance into a list
            }
            else {

                exist=true;
                break;
            }






        }
    }

}

3 个答案:

答案 0 :(得分:0)

生成每个id的列表太多而且O(n)相当大的动作..

而是创建一个“GeoDevice”类机智id,lat,long和实现可比较 所以你可以按id排序。

然后当你得到sql答案时,创建一个GeoDevices列表然后再排序 通过对象中的ID浏览它来获取所需的一切......

答案 1 :(得分:0)

您可以使用Map作为Integer,将Value作为ResultBean列表

Map<Integer, List<ResultBean>> map= new HashMap<Integer, List<ResultBean>>();
List<ResultBean> resultList = new ArrayList<ResultBean>();
// fetch data in rsultList by ID from table
map.put(1, new ArrayList<ResultBean>());

答案 2 :(得分:0)

我们可以将位置数据封装在名为&#34; Location&#34;。

的类中
class Location{
   private double latitude;
   private double longitude;

   public Location(double latitude, double longitude){
      this.latitude = latitude;
      this.longitude = longitude;
   }

  public String toString(){
     return this.latitude+","+this.longitude;
  }
}

然后我们可以将数据存储在数据结构中,如下所示: -

Map<Integer,List<Location>> locationData = new HashMap<>();  // Java 7 or above

Data visualized in the above data-structure