java - 我们如何搜索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");
我需要这样的东西:
- 如果我们使用
key
和 Specified调用该函数,value
我们应该得到一个过滤的HashSet<HashMap<String, String>>
对象。任何范围?
或任何其他简单的方法来进行这种类型的过滤。我准备改变这个HashSet
概念。
请注意,我不希望代码包含任何类型的循环,例如 for、while、do while 等。
解决方案
我尝试使用 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")
推荐阅读
- python - 带 4x4 矩阵键盘的口语程序,并读取多个数字
- c++ - Valarray 切片数组与 'operator*' 不匹配
- ios - 在 Swift 5 中重新排序 Core Data 中的表格视图单元格
- java - 在Java中保持组件方向的同时旋转数组
- reactjs - reactjs中如何创建函数组件的新实例?
- unity3d - 保存玩家的位置不能统一工作
- python - 名称“列表”未定义-Python
- python - 如何在文件中查找特定字符串?
- amazon-web-services - 在 Serverless 中的微服务之间共享 API 网关
- javascript - jQuery未定义的MVC