【问题标题】:Check if Object inside an ArrayList have same ID value before insert into ArrayList在插入 ArrayList 之前检查 ArrayList 中的 Object 是否具有相同的 ID 值
【发布时间】:2020-04-22 12:39:29
【问题描述】:

大家好,我有这个 ArrayList

public static List<JSONObject> markerList = new ArrayList<JSONObject>();

我用 for (loop) 在里面放了一个 JSONObject 使用来自服务器的 ID 和一些信息 还有一个标记 ID(谷歌地图..)

如何检查数组中的这个对象是否有特定的 id,所以我不再插入它 因为该对象将具有不同的值,例如纬度和经度以及标记 id,但与 ArrayList 中的所有重复对象具有相同的驱动程序 id,这真的让我在想如何检查它我试图在任何地方搜索任何帮助家伙

public static List<JSONObject> markerList = new ArrayList<JSONObject>();
public static void CreateMarker(JSONArray arrayList){
    try {
        Marker marker;
        for (int counter = 0; counter < arrayList.length(); counter++) {
            JSONObject json=arrayList.getJSONObject(counter);
            int id = json.getInt("id");
            int is_active = json.getInt("is_active");
            double latitude = json.getDouble("latitude");
            double longitude = json.getDouble("longitude");

                MarkerOptions markerOptions = new MarkerOptions()
                        .position(new LatLng(latitude, longitude))
                        .title(String.valueOf(id))
                        .flat(true)
                        .anchor(0.5f, 1.0f)
                        .icon(BitmapDescriptorFactory.fromResource(R.drawable.car_marker_dark));
                marker = mGoogleMap.addMarker(markerOptions);
                Log.e("MarkerList", "Marker id '" + marker.getId() + "' added to list.");
                Log.e("MarkerList", String.valueOf(markerList));
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("id",id);
                jsonObject.put("is_active",is_active);
                jsonObject.put("latitude",latitude);
                jsonObject.put("longitude",longitude);
                jsonObject.put("Marker",marker);
                markerList.add(jsonObject);

        }
    }catch (Exception e){
        e.printStackTrace();
    }
}

【问题讨论】:

  • 使用== 而不是.equals()== 检查两个对象是否为同一个对象,不检查它们是否具有相同的内容。

标签: java google-maps android-studio arraylist


【解决方案1】:

您的问题的一个可能解决方案是使用HashMap 而不是ArrayList,键是id,值是JSONObject。这样,您可以在插入之前检查HashMap 是否已经包含您的密钥。

【讨论】:

  • 一个非常好的方法兄弟我有一些问题如果你可以,当然,
  • 很高兴我能帮上忙!如果您想编辑 JSON 对象,您可以将其替换为相应的 id。 ArrayList 和 HashMap 之间的性能差异在于,在 HashMap 中查找元素需要 O(1) 时间,如果不按索引搜索,从 ArrayList 中查找元素可能需要 O(n) 时间。至于限制,我认为一个有效的限制是,如果您从地图中获取所有值,则不能确保它们将按照插入的顺序返回。除此之外,我认为它非常适合您的用例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-16
  • 2013-11-11
  • 1970-01-01
相关资源
最近更新 更多