Java实现 给出一个value为前缀字符串的Map集合,找出需求字符串匹配最长前缀的key值_java中map能不能做到前缀匹配-程序员宅基地

技术标签: Java  

代码

	import java.util.HashMap;
	import java.util.Map;
	
	public class test {
    
	    public static void main(String[] args) {
    
	        HashMap<Long, String> map = new HashMap<>();
	        map.put(11L, "上海路");
	        map.put(20L, "南京路");
	        System.out.println(startPrefixLongest(map, "上海路陆家嘴"));
	    }
	
	    /**
	     * 匹配字符串最长前缀
	     *
	     * @param collect key->主键 value->前缀
	     * @param name    需要匹配的字符串
	     * @return 最长前缀的key, 返回null表示没有前缀匹配上
	     */
	    private static Long startPrefixLongest(Map<Long, String> collect, String name) {
    
	        String newName = name.toUpperCase();
	        Long id = null;
	        int maxLength = 0;
	        for (Map.Entry<Long, String> next : collect.entrySet()) {
    
	            boolean flag = true;
	            char[] ta = newName.toCharArray();
	            int to = 0;
	            char[] pa = next.getValue().toUpperCase().toCharArray();
	            int po = 0;
	            int pc = next.getValue().toCharArray().length;
	            // Note: toffset might be near -1>>>1.
	            if (to > ta.length - pc) {
    
	                continue;
	            }
	            while (--pc >= 0) {
    
	                if (ta[to++] != pa[po++]) {
    
	                    flag = false;
	                    break;
	                }
	            }
	            if (!flag) continue;
	            if (next.getValue().toCharArray().length > maxLength) {
    
	                maxLength = next.getValue().toCharArray().length;
	                id = next.getKey();
	            }
	        }
	        return id;
	    }
	}

运行效果

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210331141539315.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3kxNTM0NDE0NDI1,size_16,color_FFFFFF,t_7

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/y1534414425/article/details/115349319

智能推荐

端口(一)-放在这查询_av1568-程序员宅基地

文章浏览阅读8.3k次。PORT NUMBERS(last updated 31 August 2004) The port numbers are divided into three ranges: the Well Known Ports,the Registered Ports, and the Dynamic and/or Private Ports.The Well Known P_av1568

go string []byte相互转换_go string转byte数组-程序员宅基地

文章浏览阅读5.1k次。string 不能直接和byte数组转换string可以和byte的切片转换1,string 转为[]bytevar str string = "test"var data []byte = []byte(str) 2,byte转为stringvar data [10]byte byte[0] = 'T'byte[1] = 'E'var str string..._go string转byte数组

自动计算UITableViewCell的高度_systemlayoutsizefittingsize tableviewcell 高度-程序员宅基地

文章浏览阅读885次。需要用到一个新的API systemLayoutSizeFittingSize:来计算UITableViewCell所占空间高 度。Cell的高度是在- (CGFloat)tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath这个UITableViewDelegate的方法 里面传给UI_systemlayoutsizefittingsize tableviewcell 高度

【左神】猫狗队列-程序员宅基地

文章浏览阅读265次。给猫和狗的父类统一包装一下,附加属性时间戳,通过时间戳count来确定加入队列的先后顺序。使用两个队列,一个存猫的信息,一个存狗的信息。1. 存储猫的信息,狗的信息到队列中。弹出猫的信息,直接把猫队列弹出即可。弹出猫或狗,依次按照时间戳弹出即可。弹出狗的信息,只把狗队列弹出即可。2. 依次弹出所有的猫队列的猫。3. 依次弹出所有的狗队列的狗。5. 可以判断猫是否还有。4. 交替弹出猫狗队列。7. 判断猫或狗是否还有。6. 判断狗是否还有。...

帝国CMS7.5漏洞复现_empirecms 7.5漏洞-程序员宅基地

文章浏览阅读4.6k次。漏洞描述帝国CMS系统,EmpireCMS 7.5版本及之前版本在后台备份数据库时,未对数据库表名做验证,通过修改数据库表名可以实现任意代码执行。该漏洞的产生,最根源的问题是没有对get,post提交方式进行严格的安全效验与过滤,导致可以插入恶意代码到后端服务器去处理,导致漏洞的发生。本次复现需要弄到管理员权限,登陆到后台。影响的版本:EmpireCMS V7.5漏洞危害:工具:御剑、bur suite、菜刀,蚁剑漏洞复现1、安装帝国网站管理系统源码下载地址:帝国软件.._empirecms 7.5漏洞

百度地图Marker隐藏/显示_百度地图api使用hide隐藏marker有阴影-程序员宅基地

文章浏览阅读1.1w次。1. 隐藏Markerfunction hiddenMarker(eventtype){var allOverlay = map.getOverlays();for (var i = 0; i if(allOverlay[i]["layerType"]==eventtype){map.removeOverlay(allOverlay[i]);}}}2_百度地图api使用hide隐藏marker有阴影

随便推点

Connection closed by foreign host原因ip冲突及解决办法-程序员宅基地

文章浏览阅读10w+次,点赞8次,收藏32次。使用xshell连接centos时总自动断开,按网上的修改探寻报文周期方法试了,也没用,突然发现换了一个无线网后,竟然不会断开了,于是猜想是不是ip冲突导致,而且报错信息也提示连接被客户机关闭先连接会自动断开的无线网==》ipconfig==》192.168.1.104虚拟机给centos分配的ip连接不会自动断开的无线网显然一个路由器dhcp地址池是在192.16_connection closed by foreign host

ST Link设备连接正常,但是keil中找不到已连接的设备_if the target is in low power mode, please enable -程序员宅基地

文章浏览阅读2.5w次,点赞19次,收藏79次。报错:No target connectedError: Flash Download failed - Target DLL has been cancelledConnection to device is lost: check power supply and debug connection.If th..._if the target is in low power mode, please enable "debug in low power mode

LAMP兄弟连-职业技能免费线下讲座_lamp兄弟连的linux讲座吧-程序员宅基地

文章浏览阅读514次。 不管从事任何行业,一个人若想在职场获得成功,除了专业水平的不断提高和进步,学会更多的职业技能,也是职场发展的关键,程序员亦是如此。本课程旨在帮助听课者建立积极的心态,调整良好的工作和生活状态,了解如何科学的学习和工作,建立基本的时间观念和目标管理方法,掌握学习和工作中的沟通方法和技巧,将自已所拥有的专业知识与能力进行充分的发挥,并在职场获得更多的机会。 课程时间:2010年10月_lamp兄弟连的linux讲座吧

支持select下拉框选择输入和键盘输入两种输入方式并且支持手动换行_让 select 选择器同时拥有下拉选择和输入文本(支持手动输入文本和下拉选择)-程序员宅基地

文章浏览阅读3.5k次,点赞2次,收藏2次。接收到一个需求,目标是实现一个工具可以支持select下拉框选择输入和键盘输入两种输入方式同时支持手动换行。1、键盘输入默认情况下div标签是不可编辑的,加上contenteditable="true"之后使得div标签变成可编辑状态,我们可以随意修改div的内容。div(class="tt" contenteditable="true") 鹅鹅鹅,曲项向天歌。白毛浮绿水..._让 select 选择器同时拥有下拉选择和输入文本(支持手动输入文本和下拉选择)

JAVA利用jsoup爬取html静态网页中的指定数据_java爬取静态html-程序员宅基地

文章浏览阅读870次。这里写目录标题利用jsoup爬取html静态网页中的指定数据描述利用jsoup爬取html静态网页中的指定数据描述爬取指定静态页面的某个模块下的数据这里爬取的网页链接是:http://www.hljkjt.gov.cn/html/zwgk/tztg/list.html下的通知通告内容,及每个通知通告对应的链接。爬取的数据初步写入本地文件,效果如下:创建maven项目,pom.xml文件: <dependencies> <dependency> _java爬取静态html

UITextField设置左侧图片、文字居中(占位符的位置)_组件uitextfield文字图片居中-程序员宅基地

文章浏览阅读1.5k次。一、我们通常在设计登录界面时会用到UITextField,如下图所示:通常想实现下面几点:1、左边显示图片2、textField中添加默认的占位符(提示文字),并且希望占位符和左边图片有一点的距离,或者让占位符居中,3、点击textField输入时光标的位置应该紧在占位符左侧,并紧挨着占位符最终实现效果如下图所示:4.如何更好地限制一个UITextField的输入长度20151130083016624.png二、左边显示图片很简单下面几行代码搞定(右边显示图片同理):UI_组件uitextfield文字图片居中