现在要实现下面的功能:
(1)存储文本框输入的内容,去掉重复:
(2)当我输入一个字符的时候,自动检测所有的以该字符开头的内容并显示,
输入两个字符的时候,自动检测以该字符串匹配的所有字符并显示。功能类似百度的搜索,自动检测以前曾经输入的内容。
(3)例如;输入 abc //存储
输入 aef //输入a的时候检测abc,ab的时候,无显示,abc无显示,最后存储。
(1)存储文本框输入的内容,去掉重复:
(2)当我输入一个字符的时候,自动检测所有的以该字符开头的内容并显示,
输入两个字符的时候,自动检测以该字符串匹配的所有字符并显示。功能类似百度的搜索,自动检测以前曾经输入的内容。
(3)例如;输入 abc //存储
输入 aef //输入a的时候检测abc,ab的时候,无显示,abc无显示,最后存储。
1、用js来操作
2、把输入的内容存储到cookie中,当下次输入时先从cookie中取出来判断是否重复,不重复就加入到此cookie中,当然关键字你可以用分割符来形成一个字符串保存成一个cookie
3、在文本框中增加onchange或者是失去焦点时的事件。当文本框的内容发生变化,则在下拉列表中显示以输入字符开头的cookie变量的值(分割后)
了。有了思路,相信搂主能做到了把?
我的思路是这样:
我想使用set,可以去掉重复,同时set有序存放,效率较高.但我不知道如何使用这个有序的序列快速地定位我的区间.数据很大,不敢从头开始遍历的.且请高手指点.不用给代码只给思路就好.
如果是百度的那种的话,应该就是我之前的思路
如果你要把所有的都保存到数据库的话,很大的,至少你要增加用户标识来区别,同时用TreeSet来保存,他可以自动排好序的。
当然你在服务器端处理的话我估计你需要用到ajax才能做到
我是觉得没必要保存那些数据。
再次感谢!
我在j2se里面使用,并不存储在数据库.只是放到一个容器里面.但想选择一个快速的查找匹配的方法.只要不用从头开始遍历就好.
此方法为优化了的查找方法。
我做过测试,4w条数据,几个ms就可以找出来
加上监听事件就可以了
不过这种还是需要正则表达式来查找到的
请问你是怎么查找的?
我这里只是匹配一部分.并不是全部.象微软的msdn的搜索,金山词霸他们的效率都很高的.
private Set<String> tempSet = new TreeSet<String>();
String str = text.getText();
//寻找匹配的字符串;
tempSet = ts.tailSet(str);
算法我已经解决了,但仍然非常感谢大家。