我现在有一个LIST,里边放了很多的String 字符串.
现在要看看String str="select",在队列中的某一个String对象中是否存在.
由于数据量比较大,有没有好的算法可以解决?
谢谢!

解决方案 »

  1.   

    List中的String是如何组织的?
    如果按字典序的话可能查找能快点。
    反正就那么多查找算法,都很经典,看哪个适合你了。
      

  2.   

    list.add("str1")
    list.add("str1")
    list.add("str1")
    list.add("str1")
    list.add("str1")
    是已这种形式组织的
      

  3.   

    list.indexOf()这个效率低
    我要查的是LIST当中对象中的字符串中有没有STR
      

  4.   

    System.out.println(list.contains(str))
      

  5.   

    不要用 List 用 HashSet 吧,Hash 算法查找很快的。不过用 HashSet 重复的就剩一条了,如果你这个 List 只是用在这一个地方的话,
    还是改成 HashSet,用 contains 方法查找,这个速度比 List 快成百上千倍。
      

  6.   

    如果你一定要用 List 的话,要加快搜索速度,可以先用 Collections.sort(list); 这个 List 排序,
    然后再用 Collections.binarySearch 二分法查找,可以快很多。排序只要做一次就可以了。
      

  7.   

    楼上方法就很好,
    或者用TreeList的实现,问题是用sort或者TreeList的话,
    List中的数据会被自然排序。
    不知道楼主要不要保持插入的顺序不能整理顺序的话,
    用ArrayList也不错,
    数组的访问效率总是最好的
    good luck
      

  8.   

    我在 7 楼、8 楼提供了两种方法,如果既不想改成 HashSet,也不想先进行排序的话,
    那只能采用 ArrayList 本身的 indexOf 或者 contains 的顺序方式查找!这种检索
    速度想都不用想肯定是很慢的!
      

  9.   

    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");
    }
      

  10.   

    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");
    }