内部没有循环HashSet的对象>?,java,android,filter,hashmap,hashset"/>

首页 > 解决方案 > 我们如何搜索HashMap内部没有循环HashSet的对象>?

问题描述

    HashSet<HashMap<String, String>> Assets = new HashSet<>();
    HashMap<String, String> Items=new HashMap<>();
    Items.put("AssetId","1");
    Items.put("AssetName","Table");
    Items.put("AssetType","1");
    Assets.add(Items);
    Items=new HashMap<>();
    Items.put("AssetId","2");
    Items.put("AssetName","Chair");
    Items.put("AssetType","1");
    Assets.add(Items);
    Items=new HashMap<>();
    Items.put("AssetId","3");
    Items.put("AssetName","Computer");
    Items.put("AssetType","2");
    Assets.add(Items);
    Items=new HashMap<>();
    Items.put("AssetId","4");
    Items.put("AssetName","Printer");
    Items.put("AssetType","2");
    Assets.add(Items);

    HashSet<HashMap<String, String>> AssetsFiltered= Assets.filter("AssetId","1,3");

我需要这样的东西:

或任何其他简单的方法来进行这种类型的过滤。我准备改变这个HashSet概念。

请注意,我不希望代码包含任何类型的循环,例如 for、while、do while 等。

标签: javaandroidfilterhashmaphashset

解决方案


我尝试使用 kotlin 代码,首先我们需要将 HashSet 更改为 Sequence 并使用您想要的值按键过滤。

像这样的代码:

    val Assets: HashSet<HashMap<String?, String?>> = HashSet()
    var Items: HashMap<String?, String?> = HashMap()
    Items["AssetId"] = "1"
    Items["AssetName"] = "Table"
    Items["AssetType"] = "1"
    Assets.add(Items)
    Items = HashMap()
    Items["AssetId"] = "2"
    Items["AssetName"] = "Chair"
    Items["AssetType"] = "1"
    Assets.add(Items)
    Items = HashMap()
    Items["AssetId"] = "3"
    Items["AssetName"] = "Computer"
    Items["AssetType"] = "2"
    Assets.add(Items)
    Items = HashMap()
    Items["AssetId"] = "4"
    Items["AssetName"] = "Printer"
    Items["AssetType"] = "2"
    Assets.add(Items)


    val filter = Assets.asSequence().filter { pred -> pred["AssetId"] == "2" }
    val AssetsFiltered: HashSet<HashMap<String?, String?>> = filter.toHashSet()

    val filter2 = Assets.asSequence().filter { pred -> pred["AssetId"] == "1" || pred["AssetId"] == "2" }
    val AssetsFiltered2: HashSet<HashMap<String?, String?>> = filter2.toHashSet()

    val filter3 = Assets.asSequence().filter { pred -> pred["AssetId"]!!.toInt() >= "1".toInt() && pred["AssetId"]!!.toInt() <= "3".toInt() }
    val AssetsFiltered3: HashSet<HashMap<String?, String?>> = filter3.toHashSet()

    Log.e("Assets Test", "Test $AssetsFiltered")
    Log.e("Assets Test", "Test2 $AssetsFiltered2")
    Log.e("Assets Test", "Test2 $AssetsFiltered3")

推荐阅读