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
并指定 value
我们应该找一个过滤器 HashSet<HashMap<String, String>>
对象。任何范围?。
或任何其他简单的方法来做这种类型的过滤。我已经准备好改变这个了 HashSet
概念。
请注意,我不希望代码包含任何类型的循环,如for,while,do while等。
3条答案
按热度按时间kx5bkwkv1#
我不知道这是不是一个好主意,但我决定用下面的代码。
参数
IsIn
用于包含或不包含if的情况IsIn
是true
它将返回过滤器值中的所有资产列表,如果IsIn
是false
它将返回所有不在筛选值中的资产列表。但我用的是
forEach
给。哈哈。。nqwrtyyt2#
你试过使用stream.filter吗?下面这样的方法应该可以达到目的:
这也将是npe安全的情况下,你没有任何资产的ID你试图筛选。
如果您希望它更通用,并且能够以数字方式传递键和值,您可以使用以下内容:
如果需要将允许的值作为单个字符串传递(如示例中所示),则始终可以调用
.split(",")
在上面。vsmadaxz3#
我在kotlin代码中进行了尝试,首先我们需要将hashset更改为sequence,并使用所需的值按键过滤。
代码如下: