0

Good morning sir,

i have code like that

List<UserDeviceEntity> ude = userDeviceService.getAllUserByCompAndRole(ue.getCompanyId(), ue.getUserRoleId());
    System.out.println("roleid: "+ue.getUserRoleId());

    for(int i = 0; i < ude.size();i++){
        System.out.println("userid : "+ude.get(i).getUserId()); 


        List<UserDeviceEntity> uds = userDeviceService.getBikeId(ue.getUserId());
        System.out.println("compare userid: "+ue.getUserId());
        List<TBikeEntity> bikeServices = tbikeService.getAllLocation(ude.get(i).getUserId());
        System.out.println("size :"+bikeServices.size());

        if (ue.getUserId() == ude.get(i).getUserId()){
            List<TBikeEntity> bike = tbikeService.getAllLocation(ude.get(i).getBikeId());
            System.out.println("sizess bike 1 : "+bike.size());
            System.out.println("bikeidssssss : "+ude.get(i).getBikeId());   
        for (int j = 0; j < bike.size(); j++) {
            System.out.println("sizess : "+bike.size());
            obj1.put("bikeID",bike.get(j).getBikeId());
            obj1.put("imei",bike.get(j).getBikeImei());
            obj1.put("gpsTime",bike.get(j).getGpsLastUpdate());
            obj1.put("lo",bike.get(j).getBikeLongitude());
            obj1.put("la",bike.get(j).getBikeLatitude());
            obj1.put("gps_status",bike.get(j).getBikeGpsStatus());
            list.add(obj1);
        }
        obj.put("success", true);
        obj.put("data", list);

    }   

    }
    return obj;
}

}

i just haved sysout from my code like this

userid : 347
compare userid: 347
size :1
sizess bike 1 : 1
bikeidssssss : 182
sizess : 1
userid : 347
compare userid: 347
size :1
sizess bike 1 : 1
bikeidssssss : 190
sizess : 1

and in my postman its just return latest array json like this

{
    "data": [
        {
            "lo": 106.818139,
            "la": -6.230327,
            "gps_status": 0,
            "bikeID": 190,
            "imei": "123456789009899",
            "gpsTime": "2018-01-18T09:31:01.000+0000"
        },
        {
            "lo": 106.818139,
            "la": -6.230327,
            "gps_status": 0,
            "bikeID": 190,
            "imei": "123456789009899",
            "gpsTime": "2018-01-18T09:31:01.000+0000"
        }
    ],
    "success": true
}

why my json return just show BikeID : 190, its just seems like just latest array show in my json, why my first BikeID : 182 cannot show in my first json result? Thanks in advance

Kraken
  • 45
  • 8
  • Possible duplicate of [Is Java "pass-by-reference" or "pass-by-value"?](https://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value) – NielsNet Jul 21 '18 at 00:08

1 Answers1

0

In your loop you modify the same obj1 on every iteration. As your list references that object you only override that one and don't add a new one. Try declaring the obj1 inside your second for-loop. That way a new object will be created for every iteration.

List<UserDeviceEntity> ude = userDeviceService.getAllUserByCompAndRole(ue.getCompanyId(), ue.getUserRoleId());
    System.out.println("roleid: "+ue.getUserRoleId());

    for(int i = 0; i < ude.size();i++){
        System.out.println("userid : "+ude.get(i).getUserId()); 


        List<UserDeviceEntity> uds = userDeviceService.getBikeId(ue.getUserId());
        System.out.println("compare userid: "+ue.getUserId());
        List<TBikeEntity> bikeServices = tbikeService.getAllLocation(ude.get(i).getUserId());
        System.out.println("size :"+bikeServices.size());

        if (ue.getUserId() == ude.get(i).getUserId()){
            List<TBikeEntity> bike = tbikeService.getAllLocation(ude.get(i).getBikeId());
            System.out.println("sizess bike 1 : "+bike.size());
            System.out.println("bikeidssssss : "+ude.get(i).getBikeId());   
        for (int j = 0; j < bike.size(); j++) {
            System.out.println("sizess : "+bike.size());
           YourObjectTypeHere obj1 = new YourObjectTypeHere(); obj1.put("bikeID",bike.get(j).getBikeId());
            obj1.put("imei",bike.get(j).getBikeImei());
            obj1.put("gpsTime",bike.get(j).getGpsLastUpdate());
            obj1.put("lo",bike.get(j).getBikeLongitude());
            obj1.put("la",bike.get(j).getBikeLatitude());
            obj1.put("gps_status",bike.get(j).getBikeGpsStatus());
            list.add(obj1);
        }
        obj.put("success", true);
        obj.put("data", list);

    }   

    }
    return obj;
}
NielsNet
  • 738
  • 7
  • 11