一些书本找不到的Java类使用方法

1.求两个ArrayList的并集,利用set的元素唯一性

public static ArrayList union(ArrayList A,
			ArrayList B)
	{
		Set set = new HashSet();
		for (Object tem : A)
			set.add(tem);
		for (Object tem : B)
			set.add(tem);
		ArrayList result = new ArrayList<>(set);
		return result;
	}



2.求两个arraylist的交集

	public static ArrayList intersect(ArrayList A,
			ArrayList B)
	{
		Map<Object, Boolean> map = new HashMap<Object, Boolean>();
		ArrayList list = new ArrayList<>();

		for (Object tem : A)
			// if (!map.containsKey(tem))
			map.put(tem, Boolean.FALSE);

		for (Object tem : B)
			if (map.containsKey(tem))
				map.put(tem, Boolean.TRUE);

		for (java.util.Map.Entry<Object, Boolean> e : map.entrySet())
		{
			if (e.getValue().equals(Boolean.TRUE))
				list.add(e.getKey());
		}
		return list;
	}


 

3.求两个Arraylist集合差

public static ArrayList minus(ArrayList A,
			ArrayList B)
	{
		ArrayList list = new ArrayList<>();
		for (Object tem : A)
			// if (!A.contains(tem))
			list.add(tem);

		for (Object tem : B)
			if (list.contains(tem))
				list.remove(tem);
			else
				list.add(tem);

		return list;
	}


 

4.写一个关于 Map<Arraylist,Integer>类型的比较器

public class CompareIndex implements Comparator
{
	@Override
	public int compare(Object o1, Object o2)
	{
		ArrayList A = (ArrayList) o1;
		ArrayList B = (ArrayList) o2;

		for (int i = 0; i != A.size(); ++i)
		{
			if (A.get(i).getClass().toString().contains("String"))
			{
				String aStr = (String) A.get(i);
				String bStr = (String) B.get(i);
				if (aStr.compareTo(bStr) == 0)
					continue;
				else
					return aStr.compareTo(bStr);
			}

			else if (A.get(i).getClass().toString().contains("Integer"))
			{
				Integer a = (Integer) A.get(i);
				Integer b = (Integer) B.get(i);
				if (a == b)
					continue;
				else
					return a.compareTo(b);
			}

			else if (A.get(i).getClass().toString().contains("Double"))
			{
				Double a = (Double) A.get(i);
				Double b = (Double) B.get(i);
				if (a == b)
					continue;
				else
					return a.compareTo(b);
			}
		}
		return 0;
	}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值