现在要实现下面的功能:
  (1)存储文本框输入的内容,去掉重复:
  (2)当我输入一个字符的时候,自动检测所有的以该字符开头的内容并显示,
输入两个字符的时候,自动检测以该字符串匹配的所有字符并显示。功能类似百度的搜索,自动检测以前曾经输入的内容。
  (3)例如;输入 abc            //存储
             输入 aef          //输入a的时候检测abc,ab的时候,无显示,abc无显示,最后存储。

解决方案 »

  1.   

    给出一个思路吧:
    1、用js来操作
    2、把输入的内容存储到cookie中,当下次输入时先从cookie中取出来判断是否重复,不重复就加入到此cookie中,当然关键字你可以用分割符来形成一个字符串保存成一个cookie
    3、在文本框中增加onchange或者是失去焦点时的事件。当文本框的内容发生变化,则在下拉列表中显示以输入字符开头的cookie变量的值(分割后)
    了。有了思路,相信搂主能做到了把?
      

  2.   

    谢谢 hdhmail2000(禅剑飞雪) .
    我的思路是这样:
    我想使用set,可以去掉重复,同时set有序存放,效率较高.但我不知道如何使用这个有序的序列快速地定位我的区间.数据很大,不敢从头开始遍历的.且请高手指点.不用给代码只给思路就好.
      

  3.   

    搂主是要在服务器端实现阿?而不是客户端?
    如果是百度的那种的话,应该就是我之前的思路
    如果你要把所有的都保存到数据库的话,很大的,至少你要增加用户标识来区别,同时用TreeSet来保存,他可以自动排好序的。
    当然你在服务器端处理的话我估计你需要用到ajax才能做到
    我是觉得没必要保存那些数据。
      

  4.   

    hdhmail2000(禅剑飞雪) :
    再次感谢!
    我在j2se里面使用,并不存储在数据库.只是放到一个容器里面.但想选择一个快速的查找匹配的方法.只要不用从头开始遍历就好.
      

  5.   

    Set有contains方法,
    此方法为优化了的查找方法。
    我做过测试,4w条数据,几个ms就可以找出来
      

  6.   

    感觉用hashset可以更好的查找。
      

  7.   

    在j2se里面使用啊,那就更加容易了,用TreeSet吧
    加上监听事件就可以了
    不过这种还是需要正则表达式来查找到的
      

  8.   

    lcllcl987(毛爷爷) :
    请问你是怎么查找的?
    我这里只是匹配一部分.并不是全部.象微软的msdn的搜索,金山词霸他们的效率都很高的.
      

  9.   

    private SortedSet<String> ts = new TreeSet<String>();
    private Set<String> tempSet = new TreeSet<String>();
    String str = text.getText();
    //寻找匹配的字符串;
    tempSet = ts.tailSet(str);
    算法我已经解决了,但仍然非常感谢大家。