java

比较两个set集合的元素是否完全相同(不要求顺序也相同)

 

1,刚开始考虑的算法是分别判断两个set集合是否互相包含:

/**
 *
 */
package nc.set.test;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * @author limx
 * @date 2011-7-15
 */
public class SetCompare {

	Set<String> firstSets = new HashSet<String>();
	Set<String> secondSets = new HashSet<String>();
	
	private void init(List<String> firstList, List<String> secondList) {
		for(String firstSet : firstList) {
			firstSets.add(firstSet);
		}
		for(String secondSet : secondList) {
			secondSets.add(secondSet);
		}
	}


	public boolean compare(List<String> firstList, List<String> secondList) {
		init(firstList, secondList);
		if(firstSets.containsAll(secondSets) && secondSets.containsAll(firstSets)) {
			return true;
		}
		return false;
	}
	public static void main(String[] args) {
		SetCompare compare = new SetCompare();
		List<String> firstList = new ArrayList<String>();
		firstList.add("a");
		firstList.add("b");
		firstList.add("a");
		List<String> secondList = new ArrayList<String>();
		secondList.add("a");
		secondList.add("b");
		boolean isSame = compare.compare(firstList, secondList);
		if(isSame) {
			System.out.println("They are the same !");
		}else {
			System.out.println("They are not the same !");
		}
	}
}

 

2,但感觉分别调用两次containsAll方法,时间和空间复杂度并不算很好。于是想出这样的算法:当集合A和集合B的大小一样,并且其中一个包含另外一个的时候,那么,我们就可以说明两个集合里面的元素一致。

	public boolean compare(List<String> firstList, List<String> secondList) {
		init(firstList, secondList);
		if(firstSets.size() == secondSets.size() && firstSets.containsAll(secondSets)) {
			return true;
		}
		return false;
	}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值