热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

搜索地图的最佳方式

如何解决《搜索地图的最佳方式》经验,为你挑选了1个好方法。

我有一个地图(比如人们,每个例子),像这样:

public Map persOnMap= new HashMap<>();

我想按名称搜索此地图过滤.我有这个代码,但我很好奇是否有更优化或更优雅的方式来做到这一点.

public ArrayList searchByName(String query) {
    ArrayList listOfPeople = new ArrayList<>();
    for (Map.Entry entry : this.personMap.entrySet()) {
        Person person = entry.getValue();
        String name = entry.getValue().getName();
        if (name.toLowerCase().contains(query.toLowerCase())) {
            listOfPeople.add(person);
        }
    }
    if (listOfPeople.isEmpty()) {
        throw new IllegalStateException("This data doesn't appear on the Map");
    }
    return listOfPeople;
}

提前致谢



1> John Bolling..:

考虑到这一点,认为我是那个将提供基于流的解决方案的人.我不是一个"现在用流做任何事情"的人,但是流提供了一种相当简单易读的方式来表达某种类型的计算,而你的是其中之一.结合我的观察,你应该直接使用地图的价值集,你得到这个:

listOfPeople = personMap.values().stream()
        .filter(p -> p.getName().contains(query.toLowerCase()))
        .collect(Collectors.toList());
if (listOfPeople.isEmpty()) {
    // ...


推荐阅读
author-avatar
薛薛Sying
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有