Bitmap算法,查找相等的元素。
前一篇博客描述了,Bitmap的思路,下面用代码描述,在几亿的数据中得到相等的元素,可是在这里只介绍一个有限地数组来描述,Bitmap来查找相等的元素。
要注意的是,在max不等于0的时候,要写下如下的代码:
if(max==0) max=1;
else max+=1;
否则是的byte bt的bt.length超出边界。
下面就没有太多的注意问题。
package Array;
public class ArrayList_lesson2 {
public static void main(String args[]){
//定义一个整形的数组
int [] array=new int []{0,1,2,2,3,3,5,5,0};
//通过对象调用方法
new ArrayList_lesson2().PrePeat(array);
}
public void PrePeat(int array[]){
//初始化最大值
int max=0;
//找出最大值
for(int i=0;i<array.length;i++){
if(max<array[i]){
max=array[i];
}
}
//判断max是否为零
if(max==0) max=1;
//不加就会超出边界
else max+=1;
//创建byte数组
byte []bt=new byte[max];
//遍历array数组
for(int i=0;i<array.length;i++){
//判断重复的数
if(bt[array[i]]==1)
System.out.println(array[i]);
// 判断array元素不为零的元素
if(array[i]!=0) bt[array[i]]=1;
// 判断array元素为零的元素
if(array[i]==0) bt[array[i]]=1;
}
}
}