如何最快的判断一个数字(或字符串)是否是一个集合中的一员?
比如:
有一串数字 3,23,44,78,22,98 
我想知道数字a 是否是这组数中的一个。
我想了2种方法,一种方法是把上面的数,装进数组里,然后循环数组,判断每一个元素是否和a相等。第二种方法,把数字放入hashMap 作为key  ,然后判断 hashMap.containsKey(a) 是否为真我感觉好像都不太好,有什么方法又快速又简洁呢?最快速的。
谢谢大家!

解决方案 »

  1.   

    Hash算是比较快的了
    如果集合有一些特性的话,还是有些trick的
      

  2.   

    如果要速度的话,用HashSet。contains()最快
      

  3.   

    先搞清楚是要单次判断还是要多次判断。如果是单次判断,且源数组本身是有序的,就用“对分法”好了。如果源数组本身是无序的,恐怕最好就是逐个比较了,别排序了,不够费劲的。如果是多次判断,当然就要考虑把源数组先排序,然后每次就可以用“对分法”了。或者直接用 TreeSet。
      

  4.   

    用Hash快,Hash的时间复杂度比数组要快
      

  5.   

    还用那么麻烦,把你的那个串和那个待找的数字前后加个“,”, 然后看能不能在字符串中查找到,找到了不就有了吗?String one = "," + "3,23,44,78,22,98" + ","
    String tow = "," + oneNumber + ","if(one.indexOf(tow) > 0 )
    {
       //不就找到了吗?
    }