你这个看上去像是json数据,json转成List<javaBean>,在对list进行操作就简单了

解决方案 »

  1.   

    {"deviceid":"460001204101325","distance":0.0,"maxspeed":0.0,"runningtime":"0秒"},{"deviceid":"460001204101325","distance":10.8,"maxspeed":42.0,"runningtime":"45分26秒"},
    {"deviceid":"460001204101325","distance":15.0,"maxspeed":66.0,"runningtime":"26分30秒"},
    {"deviceid":"460001204101325","distance":15.5,"maxspeed":55.0,"runningtime":"29分12秒"},
    {"deviceid":"4609320402424","distance":35.2,"maxspeed":74.0,"runningtime":"1时42分27秒"},
    {"deviceid":"4609320402424","distance":4.9,"maxspeed":25.0,"runningtime":"30分24秒"},
    {"deviceid":"460706130100567","distance":0.0,"maxspeed":0.0,"runningtime":"0秒"},{"deviceid":"460706130100567","distance":88.6,"maxspeed":85.0,"runningtime":"1时22分3秒"},{"deviceid":"460706130100805","distance":26.4,"maxspeed":64.0,"runningtime":"50分59秒"}, 
    把上面的数据只要deviceid是一样的都只取一个,后面的参数相加弄成下面这种的{"deviceid":"460001204101325","distance":41.3,"maxspeed":66.0,"runningtime":"1时31分08秒"},
    {"deviceid":"4609320402424","distance":40.1,"maxspeed":74.0,"runningtime":"2时12分51秒"},
    {"deviceid":"460706130100567","distance":88.6,"maxspeed":85.0,"runningtime":"1时22分3秒"},{"deviceid":"460706130100805","distance":26.4,"maxspeed":64.0,"runningtime":"50分59秒"},
    这个怎么弄????
      

  2.   

    是,但是不是在网页上,而是在service类里用java写出来???、
      

  3.   

    后台自己拼装。List<Map<String,Object>>
    map key 放你的deviceid 。
      

  4.   

    是,但是不是在网页上,而是在service类里用java写出来???、简单的写了个,代码实现如下:
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;import net.sf.json.JSONArray;
    public class TTT {



    public static void main(String[] args) {
    String json = "[{\"deviceid\":\"460001204101325\",\"distance\":0.0,\"maxspeed\":0.0,\"runningtime\":\"0秒\"},"+
    "{\"deviceid\":\"460001204101325\",\"distance\":15.0,\"maxspeed\":66.0,\"runningtime\":\"26分30秒\"},"+
    "{\"deviceid\":\"4609320402424\",\"distance\":35.2,\"maxspeed\":74.0,\"runningtime\":\"1时42分27秒\"},"+
    "{\"deviceid\":\"4609320402424\",\"distance\":4.9,\"maxspeed\":25.0,\"runningtime\":\"30分24秒\"}]";

    JSONArray ja  = JSONArray.fromObject(json);

    List<DeviceInfo> list =  (List<DeviceInfo>) JSONArray.toCollection(ja, DeviceInfo.class);

    Map<String,DeviceInfo> map = new HashMap<String,DeviceInfo>();

    for(DeviceInfo deviceInfo: list){
     DeviceInfo deviceMap = (DeviceInfo) map
                            .get(deviceInfo.getDeviceid());
                    if (deviceMap == null) {
                        map.put(deviceInfo.getDeviceid(), deviceInfo);
                    } else {
                     deviceMap.setDistance(deviceMap.getDistance()+deviceInfo.getDistance());
                     deviceMap.setMaxspeed(deviceMap.getMaxspeed()>=deviceInfo.getMaxspeed()?deviceMap.getMaxspeed():deviceInfo.getMaxspeed());
                     //runningtime换个方式,这个你自己搞
                    }
     }
    java.util.Iterator it = map.entrySet().iterator();

    List<DeviceInfo> newList =  new ArrayList<DeviceInfo>(); //最后要的List
    while(it.hasNext()){
    java.util.Map.Entry entry = (java.util.Map.Entry)it.next();
    newList.add((DeviceInfo) entry.getValue());
    }

    for(DeviceInfo d: newList){
    System.out.println(d.getDeviceid()+"--"+d.getDistance()+"--"+d.getMaxspeed());
    }
    }
    }
    public class DeviceInfo{

    private String deviceid;
    private double distance;
    private double maxspeed;
    private String runningtime;

    public String getDeviceid() {
    return deviceid;
    }
    public void setDeviceid(String deviceid) {
    this.deviceid = deviceid;
    }

    public double getDistance() {
    return distance;
    }
    public void setDistance(double distance) {
    this.distance = distance;
    }

    public double getMaxspeed() {
    return maxspeed;
    }
    public void setMaxspeed(double maxspeed) {
    this.maxspeed = maxspeed;
    }

    public String getRunningtime() {
    return runningtime;
    }
    public void setRunningtime(String runningtime) {
    this.runningtime = runningtime;
    }




    }
      

  5.   

    感觉把数据封装成对象,在存放在Hashset集合里面 去重,,只是在实体类里面重写一下  equals 方法即可,和hashCode方法(这个其实可以不写,但是建议写)。   在遍历集合得到的就是  去重的,,感觉这样简单
      

  6.   

    {"deviceid":"460001204101325","distance":0.0,"maxspeed":0.0,"runningtime":"0秒"},{"deviceid":"460001204101325","distance":10.8,"maxspeed":42.0,"runningtime":"45分26秒"},
    {"deviceid":"460001204101325","distance":15.0,"maxspeed":66.0,"runningtime":"26分30秒"},
    {"deviceid":"460001204101325","distance":15.5,"maxspeed":55.0,"runningtime":"29分12秒"},
    {"deviceid":"4609320402424","distance":35.2,"maxspeed":74.0,"runningtime":"1时42分27秒"},
    {"deviceid":"4609320402424","distance":4.9,"maxspeed":25.0,"runningtime":"30分24秒"},
    {"deviceid":"460706130100567","distance":0.0,"maxspeed":0.0,"runningtime":"0秒"},{"deviceid":"460706130100567","distance":88.6,"maxspeed":85.0,"runningtime":"1时22分3秒"},{"deviceid":"460706130100805","distance":26.4,"maxspeed":64.0,"runningtime":"50分59秒"}, 
    把上面的数据只要deviceid是一样的都只取一个,后面的参数相加弄成下面这种的{"deviceid":"460001204101325","distance":41.3,"maxspeed":66.0,"runningtime":"1时31分08秒"},
    {"deviceid":"4609320402424","distance":40.1,"maxspeed":74.0,"runningtime":"2时12分51秒"},
    {"deviceid":"460706130100567","distance":88.6,"maxspeed":85.0,"runningtime":"1时22分3秒"},{"deviceid":"460706130100805","distance":26.4,"maxspeed":64.0,"runningtime":"50分59秒"},
    这个怎么弄???? 
      

  7.   

    json 转成Bean, 写个equals方法,或者继承排序comparable接口 ,实现comparTo方法,
      

  8.   

    {"deviceid":"460001204101325","distance":0.0,"maxspeed":0.0,"runningtime":"0秒"},{"deviceid":"460001204101325","distance":10.8,"maxspeed":42.0,"runningtime":"45分26秒"},
    {"deviceid":"460001204101325","distance":15.0,"maxspeed":66.0,"runningtime":"26分30秒"},
    {"deviceid":"460001204101325","distance":15.5,"maxspeed":55.0,"runningtime":"29分12秒"},
    {"deviceid":"4609320402424","distance":35.2,"maxspeed":74.0,"runningtime":"1时42分27秒"},
    {"deviceid":"4609320402424","distance":4.9,"maxspeed":25.0,"runningtime":"30分24秒"},
    {"deviceid":"460706130100567","distance":0.0,"maxspeed":0.0,"runningtime":"0秒"},{"deviceid":"460706130100567","distance":88.6,"maxspeed":85.0,"runningtime":"1时22分3秒"},{"deviceid":"460706130100805","distance":26.4,"maxspeed":64.0,"runningtime":"50分59秒"}, 
    把上面的数据只要deviceid是一样的都只取一个,后面的参数相加弄成下面这种的{"deviceid":"460001204101325","distance":41.3,"maxspeed":66.0,"runningtime":"1时31分08秒"},
    {"deviceid":"4609320402424","distance":40.1,"maxspeed":74.0,"runningtime":"2时12分51秒"},
    {"deviceid":"460706130100567","distance":88.6,"maxspeed":85.0,"runningtime":"1时22分3秒"},{"deviceid":"460706130100805","distance":26.4,"maxspeed":64.0,"runningtime":"50分59秒"},
    这个怎么弄????  
      

  9.   

    用TreeSet去重,要写排序方法吧?  排序相同的会去掉?
      

  10.   

    {"deviceid":"460001204101325","distance":0.0,"maxspeed":0.0,"runningtime":"0秒"},{"deviceid":"460001204101325","distance":10.8,"maxspeed":42.0,"runningtime":"45分26秒"},
    {"deviceid":"460001204101325","distance":15.0,"maxspeed":66.0,"runningtime":"26分30秒"},
    {"deviceid":"460001204101325","distance":15.5,"maxspeed":55.0,"runningtime":"29分12秒"},
    {"deviceid":"4609320402424","distance":35.2,"maxspeed":74.0,"runningtime":"1时42分27秒"},
    {"deviceid":"4609320402424","distance":4.9,"maxspeed":25.0,"runningtime":"30分24秒"},
    {"deviceid":"460706130100567","distance":0.0,"maxspeed":0.0,"runningtime":"0秒"},{"deviceid":"460706130100567","distance":88.6,"maxspeed":85.0,"runningtime":"1时22分3秒"},{"deviceid":"460706130100805","distance":26.4,"maxspeed":64.0,"runningtime":"50分59秒"}, 
    把上面的数据只要deviceid是一样的都只取一个,后面的参数相加弄成下面这种的{"deviceid":"460001204101325","distance":41.3,"maxspeed":66.0,"runningtime":"1时31分08秒"},
    {"deviceid":"4609320402424","distance":40.1,"maxspeed":74.0,"runningtime":"2时12分51秒"},
    {"deviceid":"460706130100567","distance":88.6,"maxspeed":85.0,"runningtime":"1时22分3秒"},{"deviceid":"460706130100805","distance":26.4,"maxspeed":64.0,"runningtime":"50分59秒"},
    这个怎么弄????  json 转成Bean 的方法:import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collection;
    import java.util.List;import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;public class JsonUtils {
      
      public static String encodeList(Object[] objs) {
        return encodeList(Arrays.asList(objs));
      }  @SuppressWarnings("unchecked")
      public static String encodeList(Collection objs) {
        JSONArray list = new JSONArray();
        if (objs == null || objs.size() == 0)
          return list.toString();
        for (Object ae : objs) {
          list.add(ae);
        }
        return list.toString();
      }
      
      @SuppressWarnings("unchecked")
      public static String encodeObject(Object obj){
        if(obj instanceof Collection)
          return encodeList((Collection)obj);
        JSONObject jo = JSONObject.fromObject(obj);
        return jo.toString();
      }
      
      @SuppressWarnings("unchecked")
      public static <T>List<T> decodeList(String str, Class<T> clazz) {
        if (str == null || "".equals(str))
          return null;
        JSONArray obj = JSONArray.fromObject(str);
        Object[] rts = obj.toArray();
        List<T> result = new ArrayList<T>(rts.length);
        for (int i = 0; i < rts.length; i++) {
          Object jo = rts[i];
          T ele = (T)JSONObject.toBean((JSONObject) jo, clazz);
          result.add( ele );
        }
        return result;
      }
      
      @SuppressWarnings("unchecked")
      public static <T>T decodeObject(String json,Class<T> clz){
        JSONObject jsonObject = JSONObject.fromObject(json);
        T bean = (T) JSONObject.toBean(jsonObject, clz);
        return bean;
      }
    } 有适合你的  ,可以转成list 里放的javaBean的型式。BEAN重写equals()方法,只要deviceid字段相同就认为是同一个对象。之后就可以遍历这个集合a(原始集合),放到b(去重后的集合),每次放的时候都检查b集合中是否已经有这个对像。b.contains(o) 用这个判断是否已经存在。存在就不放进去。2,直接遍历,放到hashset中也可以。会把重复的去掉。
    3,treeSet是按照排序去重的,如果用就实现排序接口的排序方法。排序相同会去掉。
      

  11.   

    这种数据类型要是在JS中做去重要简单更合适,jquery中有响应的方法。
      

  12.   

    用TreeSet去重,要写排序方法吧?  排序相同的会去掉?  恩呢 我说错了  实现comparable或者  comparator    谢谢
      

  13.   

    大哥不对啊,,,HashSet是重写equals和HashCOde啊,,Treeset是实现接口啊    没看清楚。
      

  14.   

    大哥不对啊,,,HashSet是重写equals和HashCOde啊,,Treeset是实现接口啊    没看清楚。
      

  15.   


    整成MAP KEY为deviceid,如果MAP中有KEY就进行累加操作,如果没有就直接PUT。
    循环咯