如题,根据业务需求需要经行数据对比,对比数据是否缺失,存在。可以通过java 中set 集合来进行判断,前提是对比的数据必须要求是唯一的。
逻辑:循环把数据存放入set集合,在循环需要对比的数据,通过set集合的add方法添加数据,若集合大小没有发生变化则表示数据存在,若集合大小发生变化则数据不存在,这个可以根据个人具体业务来进行判断。
注意:使用set集合可能造成数据丢失,所以用set方法必须保证数据的唯一性。
以下为代码:
//需求,以数据一为基础,对比数据二是否数据缺失
List listOne = new ArrayList<>(); //数据一
List listTwo = new ArrayList<>(); //数据二
for(int i = 0 ; i < 100 ; i++){
listOne.add("test"+i); //添加测试数据一
}
for(int i = 0 ; i < 50 ; i++){
listTwo.add("test"+i); //添加测试数据二
}
Set setTwo = new HashSet<>();
setTwo.addAll(listTwo); //可以通过addAll把list集合转换为set集合
List listNot = new ArrayList<>(); //存放缺失的数据
int setTwoSize = setTwo.size(); //数据一大小
for(int i = 0 ; i < listOne.size() ; i++){
setTwo.add(listOne.get(i));
if(setTwo.size() > setTwoSize ){ //判断大小是否改变 ,改变表示数据缺失
listNot.add(listOne.get(i)); //存放缺失了哪些数据
setTwoSize = setTwo.size(); //更新基础集合大小
}
}
//打印缺失数据
for(int i = 0 ; i < listNot.size() ; i++)
{
System.out.println(listNot.get(i));
}
//需求:以数据一为基础,判断数据二中数据是否重复
ListlistOne = new ArrayList<>(); //数据一
ListlistTwo = new ArrayList<>(); //数据二
for(int i = 0 ; i < 100 ; i++){
listOne.add("test"+i); //添加测试数据一
}
for(int i = 0 ; i < 50 ; i++){
listTwo.add("test"+i); //添加测试数据二
}
SetsetOne = new HashSet<>();
setOne.addAll(listOne); //可以通过addAll把list集合转换为set集合
ListlistNot = new ArrayList<>(); //存放缺失的数据
int setOneSize = setOne.size(); //数据一大小
for(int i = 0 ; i < listTwo.size() ; i++){
setOne.add(listTwo.get(i));
if(setOne.size() == setOneSize ){ //判断大小是否改变 ,改变表示数据缺失
listNot.add(listTwo.get(i)); //存放缺失了哪些数据
setOneSize = setOne.size(); //更新基础集合大小
}
}
//打印缺失数据
for(int i = 0 ; i < listNot.size() ; i++)
{
System.out.println(listNot.get(i));
}