java大量数据对比

如题,根据业务需求需要经行数据对比,对比数据是否缺失,存在。可以通过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));
		}
      
      
     
     
    
    
   
   

//需求:以数据一为基础,判断数据二中数据是否重复
List<String> listOne = new ArrayList<>(); //数据一
List<String> 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<String> setOne = new HashSet<>();
setOne.addAll(listOne);  //可以通过addAll把list集合转换为set集合
List<String> listNot = 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));
}


  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值