HashMap<String, List<CommodityEntity>> 现在有这么一个类型的数据,我要给它实现一二级模糊搜索功能。请帮我写Java代码。返回的依然是 HashMap<String, List<CommodityEntity>>
时间: 2024-05-14 14:17:31 浏览: 97
好的,我将为您提供Java代码实现。下面是代码:
``` java
import java.util.*;
import java.util.stream.Collectors;
public class SearchHelper {
public static HashMap<String, List<CommodityEntity>> search(HashMap<String, List<CommodityEntity>> data, String keyword) {
HashMap<String, List<CommodityEntity>> result = new HashMap<>();
// 一级模糊搜索
List<String> firstLevelKeys = data.keySet().stream()
.filter(key -> key.contains(keyword))
.collect(Collectors.toList());
for (String key : firstLevelKeys) {
result.put(key, data.get(key));
}
// 二级模糊搜索
List<String> secondLevelKeys = data.keySet().stream()
.filter(key -> !firstLevelKeys.contains(key))
.filter(key -> key.matches(".*" + keyword + ".*"))
.collect(Collectors.toList());
for (String key : secondLevelKeys) {
result.put(key, data.get(key));
}
return result;
}
}
```
在这个类中,我们定义了一个名为“search”的静态方法,将HashMap和一个关键字作为输入。
这个方法首先创建一个新的HashMap作为返回结果。然后,它使用Java 8流功能过滤出包含关键字的一级键。用过滤出来的键来获取对应的值,将其放入返回的HashMap中。
接下来,它会过滤出包含关键字但不是一级键的键。然后它会将这些键的值放入返回的HashMap中。
最后,返回包含搜索结果的新HashMap。
我希望这份代码可以满足您的要求。如果您有其他问题或需求,请随时告诉我。
阅读全文