有一个List<String> idList存着很多ID(String)现在有两个List,分别是List<Company>和List<Organization>,存的是许多Company和Organization的Object而Company和Organization的Object里面,包括一个客户ID的List,List<Client_ID>如何高效地判断idList里面的ID在不在Company和Organization的Client_ID里面?

解决方案 »

  1.   

    只能使用循环吧?可以试试for(int i=size-1;i>=0;i--)
      

  2.   

    建议改成Set,查找的时候效率肯定很好
      

  3.   

    Interface List<E> boolean contains(Object o) 
              Returns true if this list contains the specified element. 
     boolean containsAll(Collection<?> c) 
              Returns true if this list contains all of the elements of the specified collection. 
      

  4.   

    存得时候用hashmap来存,这种多次查询的,毫无疑问hashmap是最快的。
      

  5.   

    have a try
    List<String> idList = aaa;
    List<Company> cmpList = xxx;
    List<Organization> orgList = yyy;
    for (Company c : cmpList) {
        List<String> list = new ArrayList(c.getClientId());
        int size = list.size();
        list.removeAll(idList);
        if (size == list.size()) {
            System.out.println("contains id in idList");
        }
    }
    for (Organization o : orgList) {
        //和上面处理相似
    }
      

  6.   

    上面笔误,是if (size != list.size()) {
      

  7.   

    就凭着size可以判断ID在不在cmpList的client_id_list中么?
      

  8.   

    集合的交并差处理
    cmpList的client_id_list和idList作差处理,如果size发生了变化,就说明和idList有重复才会被差掉的,所以可以判断
    当然,用两个集合的交集判断也可以,即
    cmpList的client_id_list.retainsAll(idList),如果交集的size为0,说明没有交集,也就是不包含idList
      

  9.   

    当然,你的问题比较暧昧,是包含所有的idList,还是包含其中一个就算包含?不过哪种情况,做法都一样
      

  10.   

    那请问这个算法和hashmap相比,效率如何呢?
      

  11.   

    感觉hashMap 有key和value,你可以直接通过key访问,应该会达到相应的效果!