java快速比对重复率
2022-04-10阅读(670)

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