java快速比对重复率

java快速比对重复率

问:java 如何高效判断数据是否重复
  1. 答:我觉得用程序处理,再怎么快也不会有高效率,最好在使用这些数据时,先将数据导入数据库,用查询语句来处理,如distinct
  2. 答:一、这么大的数据量如果一次性放到一个Map中是否内存会使用过多,这是要考虑的,是否可以考虑批量处理呢?读取也可以用批量。
    二、假如一次性放到一个MAP中,是否可以保存到数据库中,保存的时候肯定是用批量处理。
  3. 答:为什么不从数据库语句下手呢……
  4. 答:只判断是否重复还是需要判断哪些是重复的
  5. 答:在普通方法里,map算是快的了。
    你可以把这些数据扔到一个小数据库中,用sql找就很快了,数据库对这种要求支持很好的。
    你不想用数据库,那你就用B-树吧
  6. 答:可以用Set 去除重复
问:java如何快速比较两个文件是否相同
  1. 答:最好使用shell脚本,一行搞定,comm命令
  2. 答:看文件名 然后文件格式 还有文件大小 最后一个可选 就看严谨程度了
  3. 答:计算MD5或SHA-1,一样的就是同一个文件
  4. 答:使用mon codec 库 计算一下 md5或sha1,相同的文件md5/sha1 也相同
  5. 答:每个文件都可以转化为md5 的标识。两个内容完全相同的文件,他转化为md5的 内容相同。通过这个就,网盘就可以确定是否上传了。
问:Java或JavaScript如何使用数组高效率找出其中重复的数据
  1. 答:java是放到set集合里面(自动取出重复项,并且排序)
问:java中一个list,如果比较出里面哪几个重复
  1. 答:for(int i=0;i<list.size;i++)
    {
    for(int j=0;j<list.size;j++){
    if(i!=j&& list.get(i)=list.get(j) ){
    system.out.print(i+"和"+j+"重复!");//i、j 指的是是是下标
    }
    }
    }
    }//没有测试,不知道能不能行(效率不高)
  2. 答:那就只能一个一个遍历了:
    for(int i = 0 ;i<list.size();i++){
    for(int j=i;j<list.size();j++){
    if(list.get(i).equals(list.get(j))){
    System.out.println("第"+list.get(i)+"和第"+list.get(j)+"个相等");
    }
    }
    }
  3. 答:for(int i=0;i<list.size();i++){
    for(int j=0;j!=i&&j<list.size();j++){
    if(list.get(i).equals(list.get(j))){
    System.out.println("第"+(i+1)+"个和第"+(j+1)+"个重复");
    }
    }
    }
  4. 答:用Set应该比较简单
  5. 答:最简单?用linq
    var result = list.Distinct();
问:java怎么判断数组中有重复的元素
  1. 答:1、写两个for循环,外层for循环每取出一个值,都和内层for循环的值做比较,出现两次及以上相同的情况,即有重复元素。当然这种效率比较低。
    2、写两个for循环,外层for循环取第一个值的时候,和内层循环的第二个值及之后的值比较;外层for循环取第二个值的时候,和内层循环的第三个值及之后的值比较……
    以此类推,出现一次及以上相同的情况,即有重复元素。
    过程就是如此,代码自己实现吧!
问:java List集合与redis数据快速比对
  1. 答:这个问题 应该没法回答 没法知道你redis里面你数据具体是什么类型存在的?如果也是list 那你就效率就很有问题了,如果用hash就会很快(也就1000次HEXISTS),所以如果你用list 是为了用他的range接口,那你为提高效率可以类似的为这个400W的数据建一个hash类型的索引结构每次维护就维护两种类型的数据,说到底还是看你具体你的数据结构和你redis中的结构的组织问题。
  2. 答:只提供想法:前提:所要对比的数据是相同的,或者不可重复字段是相同的 ,因为list数据比较小,那么让list里面的数据插入redis 数据源里面,循环单条插入,中间需要绕过并处理好报错的,然后你就知道那些事重复的了
问:java中怎么样子找出数组中重复的数,并去除
  1. 答: 
     public static void main(String[] args) {
     //可以换种思路,把数组放到set里面(set的值不会重复)就可以去重了
    Integer[] arr = {85,4,2,6,11,4,5,8,9};
    Set<Integer> set = new HashSet<Integer>();
     for(Integer i : arr)
     set.add(i);
     for(Object j: set.toArray())
     System.out.print(j + " ");
     }
  2. 答:使用Set集合处理即可,因为Set集合有特性,自动去除重复的元素;
    只要循环数组,添加到set中就可以实现了。
  3. 答:思想大概就是新建一个数组,然后把原数组的值放入新数组,检查有没有已存在的,放不进去的就是重复的,新数组就是你需要的
  4. 答:恩,把数组转换成set集合再转回去就行,
  5. 答:遍历数组,将值放入TreeSet集合,这个集合不允许重复,而且这个效率比较高
问:java比较两张表相同字段的数据
  1. 答:双循环吧
    确认A是不重复的,可以比较到相同的时候删除一个B相同值,减少后面的对比。
java快速比对重复率
下载Doc文档

猜你喜欢