站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题如何最快的判断一个数字(或字符串)是否是一个集合中的一员?谢谢大家。

如何最快的判断一个数字(或字符串)是否是一个集合中的一员?谢谢大家。

摘要: 如何最快的判断一个数字(或字符串)是否是一个集合中的一员?谢谢大家。


如何最快的判断一个数字(或字符串)是否是一个集合中的一员?
比如:
有一串数字 3,23,44,78,22,98
我想知道数字a 是否是这组数中的一个。
我想了2种方法,一种方法是把上面的数,装进数组里,然后循环数组,判断每一个元素是否和a相等。

第二种方法,把数字放入hashMap 作为key ,然后判断 hashMap.containsKey(a) 是否为真

我感觉好像都不太好,有什么方法又快速又简洁呢?最快速的。
谢谢大家!


何必呢
无论怎么样
对于无序的集合
时间复杂度都是n


楼上的有道理!


就是都一样拉


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


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


同意樓上的


如果是比较大的数据库的比较,一开始建立这个数组的时候先把他排序。
然后就可以用折半搜索法啊什么的来看。就是先把这个数字跟中间的比较。每次折半。


先搞清楚是要单次判断还是要多次判断。

如果是单次判断,且源数组本身是有序的,就用“对分法”好了。如果源数组本身是无序的,恐怕最好就是逐个比较了,别排序了,不够费劲的。

如果是多次判断,当然就要考虑把源数组先排序,然后每次就可以用“对分法”了。或者直接用 TreeSet。


路过,友情up...


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


mark!


还用那么麻烦,

把你的那个串和那个待找的数字前后加个“,”, 然后看能不能在字符串中查找到,找到了不就有了吗?

String one = "," + "3,23,44,78,22,98" + ","
String tow = "," + oneNumber + ","

if(one.indexOf(tow) > 0 )
{
//不就找到了吗?
}


对了,注意 全角和半角符号的差别


sunday_hl(何去何从)
不错


何去何从的方法好.


↑返回目录
前一篇: 这两种做法是否有效率差别?为什么?简单程序。
后一篇: 初学,请教小问题????????????