如何使用过滤器从 jsonlist 中删除对象?

How to remove objects out a jsonlist with filters?

我想使用过滤器从数组中删除某些对象。

这是生成数组的代码(JSON 解析器)

protected Boolean doInBackground(final String... args) {

            JSONParser jParser = new JSONParser();
            JSONArray json = jParser.getJSONFromUrl(url);

            for (int i = 0; i < json.length(); i++) {

                try {
                    JSONObject c = json.getJSONObject(i);

                    String naam = c.getString("actNaam");

                    String type = c.getString("actType");
                    String datum = c.getString("actDatum");

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

                    map.put("actNaam", naam);
                    map.put("actType", type);
                    map.put("actDatum", datum);


                    jsonlist.add(map);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
            return null;

        }
    }

这是显示前应过滤数组的代码。

@Override
        protected void onPostExecute(final Boolean success) {
            if (dialog.isShowing()) {
                dialog.dismiss();
            }

            for (int i = 0; i < jsonlist.size(); i++) {
                if (wandeling == false && type == "wandeling") {
                //Here we want to remove the types that have the string wandeling
                //The boolean wandeling has to be false befor the items should be removed
                }
                if (fiets == false && type == "fiets") {
                //Here we want to remove the types that have the string wandeling
                }
                if (excursie == false && type == "excursie") {
                //Here we want to remove the types that have the string wandeling
                }
            }

            ListAdapter adapter = new SimpleAdapter
                    (context, jsonlist, R.layout.list_activity,

                            new String[]{naam, type, datum},
                            new int[]{R.id.ActNaam, R.id.ActType, R.id.Actdatum});

            setListAdapter(adapter);

            lv = getListView();

        }

我们正在根据 json 文件制作列表。该列表有 3 个项目:naam、type 和 datum。 我们希望用户能够 'filter' 通过带有按钮的列表。按钮是返回 wandeling、fiets 和 excursie 的布尔值的按钮。

因此,例如,当按钮 'wandeling' 未被单击时 (false),我们希望从数组中删除类型为 'wandeling' 的所有项目; 这些类型在 json 文件中使用如下字符串进行保护:

"actType":"wandeling"
"actType":"fiets"
"actType":"excursie"

抱歉我的英语不好,感谢您的帮助!

也许你应该使用 class 而不是地图,并使用 java8

的流 api
result = jsonlist.stream()
  .filter( x -> wandling || (!x.actType.equals("wandling") )
  .filter( x -> fiets || (!x.actType.equals("fiets") )
  .filter( x -> excursie|| (!x.actType.equals("excursie") )
  .collect(Collectors.toList())

应该是这样的

这就是我所做的,它有效!

 for (int i = jsonlist.size()-1 ; i >= 0; i--) {
                    if (jsonlist.get(i).get(type).equals("wandeling") && wandeling == false) {
                        jsonlist.remove(i);
                    }
                }