java 输入提示_Java实现输入自动提示与补全功能
一、 场景与目标
在使用 IDE 开发软件时, IDE 会提供一种“智能提示”, 根据所输入的字符列出可能的词组; 在日常Web开发中,根据用户输入进行自动提示和补全,也能很好地改善使用体验。本文实现输入自动提示与补全功能。
输入自动补全功能实际上是“前缀匹配问题”, 即给定一个前缀以及一个单词列表, 找出所有包含该前缀的单词。
本文实现的功能是: 根据用户输入的关键字, 给出与之匹配的 Java 关键字。
二、 算法与设计
最简单直观的方案莫过于直接遍历单词列表, 检测每个单词是否包含前缀, 并返回。这样做的缺点是, 每次都要遍历单词列表, 效率非常低下。 一个更好的思路是, 先构建一个前缀匹配映射 Map>, key 是每一个单词中所包含的前缀, value 是包含该 key 的所有单词列表。 那么, 问题就转化为给定一个单词列表 list, 将其转换为 Map> , 这里 Word, Prefix, Matcher 均为 String 类型。
一种思路是, 遍历每一个单词包含的每一个前缀, 找出所有包含该前缀的单词。
for word in words
for prefix in word(0,i)
for word in words
if (word.startWith(prefix)) {
result.put(prefix, result.get(prefix).add(word));
}
显然, 其效率是 O(总前缀数*总单词数), 在单词列表比较大的情况下, 其效率是比较低的。 要想避免这种嵌套
java 输入提示_Java实现输入自动提示与补全功能相关推荐
- MyEclipse的自动补全功能:输入@或者.没提示
自动补全功能.一般默认的只有输入 . 的时候来才能自动提示. 配置方法: 1. 打开MyEclipse,然后"window"→"Preferences" 2. ...
- Xcode6中Swift没有智能提示和自动补全功能
今天在学习Swift的过程中,编写代码,发现没有智能提示和自动补全功能,一阵不适应,在网上溜达了下,找到了解决办法,测试可行 中文系统新建工程,copyright里有日期,2014年,"年& ...
- springboot集成elasticsearch,实现搜索提示补全功能
springboot集成elasticsearch,通过实体类创建索引,实现搜索提示补全功能 文章目录 springboot集成elasticsearch,通过实体类创建索引,实现搜索提示补全功能 一 ...
- 你知道为什么Xcode6中Swift没有智能提示和自己主动补全功能吗 ?
你知道为什么Xcode6中Swift没有智能提示和自己主动补全功能吗 ? 长沙戴维营教育将为你解开这个巨大的谜团大BUG! http://www.ubuntucollege.cn/course/29/ ...
- 转:Eclipse自动补全功能轻松设置
Eclipse自动补全功能轻松设置 || 不需要修改编辑任何文件 2012-03-08 21:29:02| 分类: Java | 标签:eclipse 自动补全 设置 |举报|字号 订阅 下 ...
- Eclipse自动补全功能轻松设置 || 不需要修改编辑任何文件
本文介绍如何设置Eclipse代码自动补全功能.轻松实现输入任意字母均可出现代码补全提示框. Eclipse代码自动补全功能默认只包括 点"." ,即只有输入".& ...
- linux 函数自动补全,Shell脚本中实现自动补全功能
对于Linuxer来说,自动补全是再熟悉不过的一个功能了.当你在命令行敲下部分的命令时,肯定会本能地按下Tab键补全完整的命令,当然除了命令补全之外,还有文件名补全. Bash-completion ...
- gocode+auto-complete搭建emacs的go语言自动补全功能
上篇随笔记录了在emacs中使用go-mode和goflymake搭建了go语言的简单编程环境(推送门),今天来记录一下使用gocode+auto-complete配置emacs中go语言的自动补全功 ...
- html 输入框自动缩短 一行内显示,JQuery UI组合框自动补全功能改进版(即时全部显示+input内容保存)...
JQuery UI Autocomplete(自动补全)功能在input前端设计中非常有用,最近一个项目正好用到,仔细研究了下组合框(combobox)的自动补全部分,官方地址是:https://jq ...
最新文章
- GRE写作-学生选择有助于就业的课程or根据兴趣选课?
- python操作mysql事务提交_python连接mysql并提交mysql事务示例
- STM32串口中断实验总结函数的初始化必须在变量的初始化之后在进行!
- 关于H3C MSR路由器L2TP隧道协议路由配置的特点
- 经验分享:三步走教你升级企业NAS设备
- JS学习记录(BOM部分)
- 酷桌面:随身携带你的企业
- perl6正则 4: before / after 代码断言: ?{} / !{}
- pyspark 编写 UDF函数
- 全球首发!惯性导航导论(剑桥大学)第一部分
- WPF之Binding基础三 Binding的路径Path
- Loadrunner关联
- 飞客蠕虫专杀工具_案例-飞客蠕虫攻击
- WWDC22 - In App Purchase 更新总结
- 计算机基础与程序设计
- 交换机MAC地址学习与转发机制
- 技术分享的优势——写文章半年的收获
- 坚果pro2官方rom_坚果pro2线刷包_坚果pro2刷机包_坚果pro2固件包_坚果pro2救砖包 - 线刷宝ROM中心...
- 内网/外网介绍以及两者比较
- 一边裁员、一边招聘,领导到底想干啥?