快速查找String 字符串的问题?算法高手快进来!!!!!!!!!!!!!!!!!! 我现在有一个LIST,里边放了很多的String 字符串.现在要看看String str="select",在队列中的某一个String对象中是否存在.由于数据量比较大,有没有好的算法可以解决?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 List中的String是如何组织的?如果按字典序的话可能查找能快点。反正就那么多查找算法,都很经典,看哪个适合你了。 list.add("str1")list.add("str1")list.add("str1")list.add("str1")list.add("str1")是已这种形式组织的 list.indexOf()这个效率低我要查的是LIST当中对象中的字符串中有没有STR System.out.println(list.contains(str)) 不要用 List 用 HashSet 吧,Hash 算法查找很快的。不过用 HashSet 重复的就剩一条了,如果你这个 List 只是用在这一个地方的话,还是改成 HashSet,用 contains 方法查找,这个速度比 List 快成百上千倍。 如果你一定要用 List 的话,要加快搜索速度,可以先用 Collections.sort(list); 这个 List 排序,然后再用 Collections.binarySearch 二分法查找,可以快很多。排序只要做一次就可以了。 楼上方法就很好,或者用TreeList的实现,问题是用sort或者TreeList的话,List中的数据会被自然排序。不知道楼主要不要保持插入的顺序不能整理顺序的话,用ArrayList也不错,数组的访问效率总是最好的good luck 我在 7 楼、8 楼提供了两种方法,如果既不想改成 HashSet,也不想先进行排序的话,那只能采用 ArrayList 本身的 indexOf 或者 contains 的顺序方式查找!这种检索速度想都不用想肯定是很慢的! List list=new ArrayList(); list.add("fds"); list.add("23"); list.add("select"); list.add("0"); boolean isExist=list.contains("select");if(isExist){System.out.println("EXIST");}else{System.out.println("NOT EXIST");} List list=new ArrayList(); list.add("fds"); list.add("23"); list.add("select"); list.add("0"); boolean isExist=list.contains("select");if(isExist){System.out.println("EXIST");}else{System.out.println("NOT EXIST");} 求一个用jstl用的循环语句 如何实现淘宝网、搜房网..的搜索功能 在线等 庖丁解牛分词(paoding)分词的问题 谁有 orcle8.1.7.0版本 的 oci.dll 和 ocijdbc8(???).dll 如何在WEB中调用socket的client端? 如何获取用户的来访路径 初学者的烦恼 tomcat如何配置多端口搭建两个网站 resultset.setFetchSize()谁知道详细使用的说明? struts只能用在tomcat里吗 笨蛋是如何练成的????? 截取HTML文章部分内容
如果按字典序的话可能查找能快点。
反正就那么多查找算法,都很经典,看哪个适合你了。
list.add("str1")
list.add("str1")
list.add("str1")
list.add("str1")
是已这种形式组织的
我要查的是LIST当中对象中的字符串中有没有STR
还是改成 HashSet,用 contains 方法查找,这个速度比 List 快成百上千倍。
然后再用 Collections.binarySearch 二分法查找,可以快很多。排序只要做一次就可以了。
或者用TreeList的实现,问题是用sort或者TreeList的话,
List中的数据会被自然排序。
不知道楼主要不要保持插入的顺序不能整理顺序的话,
用ArrayList也不错,
数组的访问效率总是最好的
good luck
那只能采用 ArrayList 本身的 indexOf 或者 contains 的顺序方式查找!这种检索
速度想都不用想肯定是很慢的!
list.add("fds");
list.add("23");
list.add("select");
list.add("0");
boolean isExist=list.contains("select");
if(isExist){
System.out.println("EXIST");
}else{
System.out.println("NOT EXIST");
}
list.add("fds");
list.add("23");
list.add("select");
list.add("0");
boolean isExist=list.contains("select");
if(isExist){
System.out.println("EXIST");
}else{
System.out.println("NOT EXIST");
}